队列速率
大多数新手管理员都能理解“队列”是某种系统或者组件的性能指标。比如磁盘I/O队列,CPU队列等等。Exchange 2013中邮件队列的运行效率是通过队列的三个属性来计算的。传入率(IncomingRate)和传出率(OutgoingRate)属性代表邮件进入和离开邮件的速率。速率(Velocity)为传出率减去传入率得到的队列消耗速率值。除了以上三个值,还应当考虑邮件数量(MessageCount)属性,该属性显示一个队列中的邮件数量。管理员应该将这些属性综合起来判断一个队列是否正常。
传入率和传出率通过计算最后60秒内每5秒传入/传出邮件的数量的平均值来得出。咱们可以举个例子来帮助理解,下表为过去60秒中,每5秒进入队列和离开队列的邮件数量。
时间 |
5s |
10s |
15s |
20s |
25s |
30s |
35s |
40s |
45s |
50s |
55s |
60s |
总共 |
进入队列 |
12 |
3 |
5 |
7 |
14 |
4 |
1 |
3 |
2 |
7 |
9 |
5 |
72 |
离开队列 |
4 |
8 |
1 |
2 |
6 |
10 |
5 |
7 |
8 |
3 |
4 |
1 |
59 |
进入队列的数值取平均值,即72/12为6,离开队列的平均值为59/12为4.9,那么这时的队列速率为4.9-6= -1.1,也就是说队列速率为负值,进入队列的量大于离开队列的值,这就会导致该队列永远不会被清空,就像是一个水池里,放水的速度小于灌水的速度,那么这个水池永远不会空。这个时候再加上队列里的邮件数量属性加以考虑,如果队列里已经堆积了一定数量邮件,但是队列速率趋近于0,那么说明该队列虽繁忙,但是一直是有效的在处理邮件。而如果说一个队列的Velocity为很大的负值,而且MessageCount值又特别大的话,那就说明这个队列的邮件流是有问题的。
查看队列
一般来说,邮件在Exchange中的处理是非常迅速的,如果队列里出现了十几封甚至几十封邮件排队的情况的时候,就说明该当前服务器或者网络处于一个比较高的负载。这时候你可以使用队列查看器或者是Get-Queue命令来查看单独服务器上的队列,也可以使用Get-QueueDigest汇总查看多台服务器上的队列情况。
Get-Queue
下面是一个Get-Queue命令在一台全角色的Exchange服务器上的输出,按MessageCount按升序排列。如果不在命令后面用-Server指定服务器的话,该命令就只返回当前Powershell连接的服务器的队列信息。
命令当中-SortOrder后边接的是按那种属性排序,属性前面的“+”号代表以升序排列,如果是“-”号则是以降序排列。还可以使用-Filiter参数来匹配一些过滤条件,比如:
Get-Queues -Server EX01 -Filter {MessageCount -gt 20} -SortOrder: -MessageCount
可以注意到,Ex2013的Get-Queue命令会详细告诉你队列速率(上面讲过的Velocity)。这与Ex2010不同,还有其他地方的不同则是等到后面讲邮件路由和传递组的时候会提到。
Exchange中的队列会在没有邮件进出的情况下被关闭,所以你可能在某工作日的高峰期看到队列里出现数据库队列和一堆SMTP目标域队列,也可能在深夜的时候发现其他的队列全消失,只剩下一个提交队列在那。另一种队列清除的情况就是邮件超时,即默认一封邮件如果超过2天没有传递成功,那么就会发送NDR给发件人,至于为啥默认是两天,微软认为超过两天之久的邮件再进行重试发送就没啥意义了,还不如返回给发件人让发件人以另外的方式联系收件人。
为了保证队列的唯一性,传输系统在建立队列的时候会用服务器名加上一个每次增加的数字以区分每个队列,这个数字会在传输服务重启的时候重置掉。
Get-QueueDigest
这条命令前边儿已经提过了,可以将多台服务器上的队列一起汇总显示,算是一个不错的改进。这里多台服务器可以是同一个林中的服务器,或者是同一DAG、同一AD站点的成员,也可以是指定列表中的多台服务器。用法和简单,在后面带上一些参数开关就可以了(-Forest,-DAG后面可以跟多个DAG名字用逗号隔开,-Server逗号隔开多台服务器,-Site),全都是字面意思,而且还有-Filter开关,可以进行过滤筛选。
使用Exchange队列查看器
尽管Exchange 2013的控制中心不再是以前那种基于MMC管理控制台的风格,而变成了网页的EAC,但是也有EAC做不到的事情,比如查看队列内容,Ex2013保留了以前的队列查看器,主要还是从易用性上面考虑,虽然使用起来性能不怎么样,队列查看器的内容每5秒刷新一次。但是时常会看到下边儿写着“X个任务进行中……”
队列状态:
每一个队列都会呈现下面几种状态:
活动:正在传输邮件
连接:正在连接下一跃点
就绪:代表该队列的所有邮件都传输成功,目前队列是空的。
重试:代表该队列正在等待重试连接
挂起:管理员手动挂起该队列,但是新邮件仍然会进入队列,但是邮件不会离开队列。
需要注意一下的是,如果是复杂的DAG环境里,那么邮件会被提交到其他Mailbox服务器进行队列而非是在本地服务器进行队列,这是由于Exchange可以将邮件传递给主要传递组里的任意服务器(当然是基于最小cost)。所以有可能你在当前这台服务器上查不到关于该邮件的队列信息,最好还是使用Get-QueueDigest来查看整个DAG里的队列。
下一章,咱们会一口气讲完如何维护队列,如何进行队列优先级的操作,以及如何利用分拣目录。