「深入 Exchange 2013」20 反压

微软一直宣称Exchange 的传输引擎足够负担非常大量的邮件传输(EXTREMELY large volumes of messages),但是在现实场景中,很多时候都会出现服务器的物理资源不够无法负担这么大量的出站与入站邮件量,换句话说微软的意思是俺设计的产品的底层逻辑足够健壮性能足够高,你再性能不行就是你硬件瓶颈了(笑)。比如一台MBX服务器可能被某一个源来的大量邮件耗费掉了非常多的可用内存,或者某些关键磁盘分区的空间近乎占满,这种情况下,Exchange就会启动反压机制来确保传输服务能够正常运转并且处理完成已经在队列中的邮件,反压机制会临时停止一些组件功能比如拒绝入站邮件以防止新的邮件进入队列,直到给Exchange造成的压力减轻为止,内存占用恢复正常,或者是磁盘空间恢复正常等等。Exchange才会再次开始启用这些被停止的功能组件。

以下我参考Exchange2013的Technet上的文档汇总了一张表格,表中之处了这些条件满足时可能会触发反压力措施:


条目


条件


邮件队列数据库所在磁盘的可用硬盘空间


Exchange监视Queue文件夹所在磁盘分区的磁盘占用率,可以通过以下公式算出该条目高级别占用率的数值

100 * (硬盘全部容量 - 修正常数) /硬盘全部容量

修正常数的值为 500 MB。

然后,向下算出中级别和正常级别的数值:该公式的结果用所用硬盘空间占全部硬盘空间百分比的形式表示。中等级别硬盘使用率比高级别硬盘使用率低 2%。正常级别硬盘使用率比高级别硬盘使用率低 4%。向下四舍五入为最接近的整数。


邮件队列数据库事务日志的可用硬盘空间


Exchange还会监视邮件队列数据库的事务日志文件所在磁盘的可用硬盘空间。同样的,可以通过以下公式计算出高级别的硬盘使用率:

100 * (硬盘全部容量 – 取小(5 GB, 3*DatabaseCheckPointDepthMax)) / 硬盘全部容量

其中DatabaseCheckPointDepthMax位于%ExchangeInstallPath%Bin\EdgeTransport.exe.config里,指代硬盘上允许存在的所有未提交的事务日志的总大小。

计算出高级之后,再向下推出中级与正常的使用率:默认情况下,中等级别硬盘使用率比高级别硬盘使用率低 2%。正常级别硬盘使用率比高级别硬盘使用率低 4%。


版本存储桶


在可将对邮件队列数据库的更改提交到事务日志之前,会将该更改列表保存在内存中。然后,会将该列表提交给邮件队列数据库自身。这些保存在内存中的未完成邮件队列数据库事务被称为 “版本存储桶”。版本存储桶数目可能会因出乎意料的大量传入邮件、垃圾邮件攻击、邮件队列数据库完整性问题或硬盘性能而增大到不可接受的数目。

三个级别阈值分别为高:200、中:120、正常:80


批处理点


Exchange 开始接收邮件时,这些邮件会按批处理进行分组,然后准备用作版本存储桶。如果传入邮件包含较大的附件,可以将其分为多个批处理。正在处理的这些批处理称为 “批处理点”。未完成的批处理点数目可以超过设置的阈值,尤其是存在出乎意料的大量带有较大附件的传入邮件时。

三个级别阈值分别为:高:4000、中:2000、正常:1000


版本存储桶和批处理点的历史记录深度


Exchange 保留版本存储桶和批处理点资源使用率的历史记录。如果资源使用率在特定数量的轮询间隔内没有下降到正常级别,称为历史记录深度,Exchange 将停止缓送延迟并开始拒绝传入邮件,直到资源使用率恢复正常。默认情况下,版本存储桶和批处理点的历史记录深度分别为 10 个和 300 个轮询间隔。


EdgeTransport.exe 进程使用的内存大小


总内存75%和1TB取小。

默认情况下,EdgeTransport.exe 文件的中等级别内存使用率为总物理内存的 73%,或为比高级别内存使用率低 2% 的值,选择二者中较小的值。EdgeTransport.exe 文件的正常级别内存使用率为总物理内存的 71%,或为比高级别内存使用率低 4% 的值,选择二者中较小的值。


EdgeTransport.exe 进程使用的内存大小的历史记录深度


Exchange 保留 EdgeTransport.exe 进程的内存使用率的历史记录。如果使用率在特定数量的轮询间隔内没有下降到正常级别,称为历史记录深度,Exchange 将开始拒绝传入邮件,直到资源使用率恢复正常。默认情况下,EdgeTransport.exe 内存使用率的历史记录深度为 30 个轮询间隔。


所有进程使用的内存


默认情况下,全部进程的高级别内存使用率为总物理内存的 94%。此值并不包括硬盘上页面文件中可用的虚拟内存。


提交队列中的邮件数


三个级别阈值分别为:高:10000、中:4000、正常:2000


提交队列中的邮件数的历史记录深度


Exchange 保留提交队列使用率的历史记录。如果提交队列使用率在特定数量的轮询间隔内没有下降到正常级别,称为历史记录深度,Exchange 将停止缓送延迟并开始拒绝传入邮件,直到提交队列使用率恢复正常。默认情况下,提交队列的历史记录深度为 300 个轮询间隔。

OK,基本上以上都可以概括为几点:可用磁盘空间,传输动作中的未提交到队列邮件数,提交队列中的邮件数量,总共的内存大小。

需要注意的是,启动反压并不代表Exchange就停止了接受入站SMTP连接,但是当一个SMTP连接建立之后,服务器会拒绝对端服务器的MAIL FROM命令,并且返回一个452 4.3.1(系统资源不足)的错误。日志里也会记载15004、15006、15007的MSExchangeTransport源日志条目。15004记录资源级别升高的条目(资源压力已从 Previous Utilization Level 增加到 Current Utilization Level。),15005会记录资源级别降低的条目(资源压力已从 Previous Utilization Level 降低到 Current Utilization Level。)15006和15007分别对应磁盘空间与内存空间。

反压只会作用在MBX服务器和边缘服务器上的传输服务,因为FET服务不会队列任何邮件。

下表汇总了一些MBX服务器上的组件在反压力启用时的行为,


资源等级


来自旧版传输服务器的连接


来自其他非Exchange服务器的连接


来自其他MBX服务器的store driver连接


分拣目录和重播目录提交


内部邮件流



允许


拒绝


允许


拒绝


正常传递



拒绝


拒绝


拒绝


拒绝


停止

从表中可以看出,在中等级别的负载下,基本的邮件流能够正常运行,因为MBX服务器之间的store driver连接可以运行,但是它们会拒绝来自其他非Exchange的SMTP服务器的连接。随着压力增长到更高级别,该MBX服务器开始拒绝接受连接直到压力减少。表中没有提到的,有一些特定的操作会在特定组件面对压力时被执行,比如如果提交队列面对压力, Exchange 服务器将通过延迟确认传入邮件来开始限制传入连接。Exchange 将通过引入延迟 MAIL FROM 命令的缓送技术来降低入站邮件流的速率。如果提交队列压力情况继续存在,Exchange 将逐渐增加缓送延迟。在提交队列使用率恢复正常后,Exchange 将逐渐开始减少确认延迟并渐渐进入正常操作。默认情况下,Exchange 将在具有提交队列压力时开始将邮件确认延迟 10 秒钟。如果提交队列继续具有压力,延迟会以 5 秒的增量增加,最高为 55 秒。如果仍旧没有减轻压力,则拒绝入站邮件。这个缓送延迟也会作用在版本存储桶与批处理点面对压力之时。

另外在EdgeTransport.exe 进程使用的内存、所有进程使用的内存、提交队列中的邮件数三项任何一项为中等级别时候,都会启动强制垃圾收集。

在所有进程使用的内存、提交队列中的邮件数两项任何一项为高级别的时候,都会启动另外两项措施:邮件冻结、从内存强制刷新DNS缓存。

这里的邮件冻结是指删除内存中缓存的排队邮件的不必要元素的操作。为了提高性能,完成的邮件都缓存在内存中。因为邮件是从邮件队列数据库中直接读取的,所以删除内存中排队邮件的 MIME 内容可减少内存使用量,但会出现较高延迟。

反压力措施触发的默认条件值都存放在EdgeTransport.exe.config配置文件里,这些设置据微软所说都是经过大量实际场景测试(微软的IT场景与Technology

Adoption Program合作伙伴环境)得出的比较理想的值,所以他们会建议不要轻易修改这些值。当然,了解这些默认值,尝试出自己环境里的最优值也不是不可以,如果想要调整它们,请参考这里:EdgeTransport.exe.config 文件中的反压力配置选项:https://technet.microsoft.com/zh-CN/library/bb201658(v=exchg.150).aspx#File

OK,反压力我们就聊到这里。下一章开始又要分几次来跟大家深入探讨下Exchange2013中的邮件路由。

时间: 2024-08-09 11:21:57

「深入 Exchange 2013」20 反压的相关文章

「深入 Exchange 2013」19 邮件限制

这一章咱们来讲讲Exchange中对邮件的QOS设置,这些设置平常也许大多数场景中不会涉及到,因为需要大批量发送邮件的场景里都会用到邮件中间件(发送大量宣传邮件或者报表).但是一旦让咱们碰上了,咱们也得知道从哪下手去调整这些设置不是,关于这个话题Technet上已经写得非常好了,咱这里也是做个总结和搬运. 在面对大批量邮件流量的时候,如何保证邮件流的处理井然有序,避免引起邮件阻塞,同时保护Exchange服务器防止其被过度使用,这是一个及其值得注意的问题.Exchange 2013当中引入了"邮

「深入 Exchange 2013」18 队列 part3

队列优先级 Exchange 2013当中,微软增加了一个"优先队列"的功能,打开它时,被标记为高优先级的邮件会比一般邮件先传送,而被标记为低优先级的邮件则会比一般邮件后传送:开启该功能之后呢,分拣器和路由算法不会受到任何影响,仅仅只是传输服务会在每个投递队列里按照优先级排列邮件. 队列优先级的设置主要通过修改EdgeTransport.exe.config配置文件的键值的方式来进行,首先通过PriorityQueuingEnabled键值设置为True开启该功能,接着按照需要调整下表

「深入 Exchange 2013」11 传输架构Part1

阅读过TechNet文档的人肯定对下面这张图不陌生,这张图完整诠释了整个Exchange 2013的邮件传输架构,前一章里已经简要讨论过的几个组件都在里头,然而还有一些其他的组件也值得深入讨论.首先咱们来聊聊图里边出现的重要词汇. 1."代理"在这里是指Agents,而非是proxy,即处理或者传输消息的某一块程序代码.图中的agents直接反映出Exchange的Business logic,例如Exchange的反垃圾和恶意软件筛选组件属于协议代理,路由代理.邮件传递代理和邮件提交

「深入 Exchange 2013」14 接收连接器

接收连接器在概念上要比发送连接器简单一点,每个接收连接器只用侦听来自你分配给它的ip地址和端口的请求,然后将SMTP会话传送出去即可.接收连接器使用权限组来决定哪些发送者被允许使用该连接器,权限组则是预先定义好的一系列安全主体对某个对象(当前场景下则是接收连接器)所拥有的权限,比如说是"任何有邮箱账户的用户"即Exchange Users,或者是"组织里的任何Exchange Server"即Exchange Servers.这种模型类似于NTFS权限模型,先把用户

「深入 Exchange 2013」17 队列 part2

队列速率 大多数新手管理员都能理解"队列"是某种系统或者组件的性能指标.比如磁盘I/O队列,CPU队列等等.Exchange 2013中邮件队列的运行效率是通过队列的三个属性来计算的.传入率(IncomingRate)和传出率(OutgoingRate)属性代表邮件进入和离开邮件的速率.速率(Velocity)为传出率减去传入率得到的队列消耗速率值.除了以上三个值,还应当考虑邮件数量(MessageCount)属性,该属性显示一个队列中的邮件数量.管理员应该将这些属性综合起来判断一个队

「深入 Exchange 2013」06 命名空间

在前面的章节中,你可能会注意到"命名空间"这样一个词,会联想到C#语言或是XML文档里的那个命名空间的概念.但是在这里它的意思更偏向于URL或者FQDN,比如一个Exchange 2010的RPC Client Access Array客户端访问阵列可能有这样一个命名空间叫mail.contoso.com,而属于OWA的命名空间是owa.contoso.com,在Exchange 2013里,命名空间的设计规划过程变得不那么复杂.我们来看 使用单一命名空间: 最简单也是最常用的做法就是

「深入 Exchange 2013」MAPI over HTTP实战配置

在前面我们聊Outlook Anywhere的文章里头,我提到了MAPI over HTTP这个Exchange Server 2013 SP1中新增加的功能,这次这篇文章咱们就详细说说这个新的传输协议是什么,以及实战如何去配置它. 什么是MAPI/HTTP,有什么好处? 以前版本中(Exchange 2010),用的是RPC over HTTP(外部网络outlook anywhere)以及RPC Direct(内部网络)连接,Exchange 2013里,所有的连接都通过Outlook An

「深入 Exchange 2013」07 Autodisocver

微软在Exchange 2007里引入Autodiscover自动发现服务,意图去简化用户配置Outlook与Exchange ActiveSync的过程.Outlook的配置文件虽然可以手动配置,但是从Autodiscover会覆盖手动配置的选项,在你做出一些更改的时候,明显批量的自动下发配置更方便. Autodiscover还负责告诉Outlook当前的邮箱位置信息,Outlook会在与邮箱断开连接之后重新尝试Autodiscover.总而言之,这玩意儿跟Outlook Anywhere一样

「深入 Exchange 2013」05 Outlook Anywhere

这一章来给大家讲Outlook Anywhere,概念比较重要,但是容易混淆,大家得仔细阅读,仔细区分. RPC over HTTP/HTTPS 首先得理解,为何在Exchange 2013当中,仅支持Outlook Anywhere的Outlook MAPI客户端连接方式.早期版本的MAPI访问依赖的是TCP的RPC协议直接连接到MBX服务器,而Exchange2013则使用HTTPS封装的RPC协议.这就意味着,如果你在当前是Ex2007或者Ex2010的环境当中,再增加一台Ex2013的服