作为管理员,我们需要密切的监控Exchange Server Store的性能状态。下面的一些性能计数器是我们需要时刻关注的:
MSExchangeIS\Active User Count
MSExchangeIS\User Count
上面这两个计数器,反映了当前服务器上的活动用户数和登陆用户数。一般性,Active User Count总是小于User Count。由于Exchange Server内部使用了一些系统邮箱用来进行服务器间通信,因此即使没有任何使用者在线,User Count也总是维持在20左右,这是正常的。
MSExchangeIS\RPC Averaged Latency
MSExchangeIS\RPC Operations/sec
MSExchangeIS\RPC Packets/sec
MSExchangeIS\RPC Requests
上面四个计数器,反映了Exchange Server Store的RPC处理响应能力。这几个计数器,最能体现当前服务器的负载和响应速度。RPC Operations/sec、RPC Packets/sec分别表示服务器每秒接收到的RPC请求(所有Outlook MAPI客户端连接在读取、发送邮件时都会向服务器发送大量的RPC请求)。RPC Requests表示Exchange Server当前正在处理的请求,一般情况下,Exchange Server最多能同时处理100个请求,因此如果这个计数器超过了100,Exchange Server将会有严重的性能问题。最后一个也是最重要的一个,RPC Averaged Latency,这个计数器表示当前时刻之前的1024个RPC请求的平均响应时间,这个时间的单位是毫秒,一般性,这个计数器应该小于20。如果该计数器大于100并且持续较长的时间,客户端Outlook的响应速度将变得很慢甚至死机。
对RPC Averaged Latency有影响的因素很多。执行备份、在线碎片整理、防病毒软件扫描数据库等等都会使RPC Averaged Latency的值升高。另外,值得注意的是,网络环境的不正确配置,也会引起问题。笔者曾遇到过由于交换机端口的速度与Exchange Server上的网卡速度不匹配而引起的严重性能问题。详细的情况是这样的,客户邮件系统的性能突然大幅度的下降,RPC Averaged Latency的值高达5位数,所有用户都不能打开邮箱。在排除Exchange和Windows的问题后,我们从客户处了解到,他们前一天更换了与Exchange Server相连的交换机。按理说,Exchange Server是应用层的软件,它不会也不应该对数据链路层的设备有任何的依赖。但是查过微软的知识库以后,我们找到这了这篇文章:“Poor Performance When Network Adapter Is Set to Auto Sense”,文章的知识库号码为330343。文中提到,对于Exchange Server,如果网卡或者交换机端口设置为自动检测速度,这可能会造成严重的性能问题。首先查看Exchange Server,其网卡的设定为100M 全双工,符合微软的要求;再连接到交换机上察看,发现交换机上跟Exchange Server网卡相连的那个端口,被设定为Auto即自动检测速度,当前的连接情况为100M 半双工。改为固定的100M全双工设定以后,故障立刻消失,RPC Averaged Latency的值恢复到了20以下,用户收发邮件都没有问题了。
事后我们分析,对于Exchange Server的系统,有可能微软在传送RPC信息时,使用了一些特殊格式的数据包,因此对网络链路有较高的要求。交换机一般都是上电之后直接使用,对它的设定往往很容易被管理员们所忽略。
MSExchangeIS\VM Largest Block Size
MSExchangeIS\VM Total 16MB Free Blocks
MSExchangeIS\VM Total Free Blocks
MSExchangeIS\VM Total Large Free Block Bytes
这四个计数器跟Exchange Server Store进程的内存使用情况有关。我们都知道,在Exchange Server上,store.exe进程往往是内存消耗的大户,ESE数据库引擎为了提高它的性能,需要申请大量的内存作为其缓存空间,在有300个以上用户的Exchange Server系统上,store.exe进程的物理内存占用量一般都在1GB以上。在Windows操作系统中,内存分为物理内存和虚拟内存。物理内存指机器上安装的内存条;虚拟内存指CPU可以寻址的内存范围。对于Windows 2000来说,物理内存的大小由安装的内存多少决定,虚拟内存默认情况下都是4GB。(关于Windows 2000内存的更进一步知识,读者可以参考Inside Windows 2000这本书的第六章:内存管理。)如下图的左面部分所显示,每一个进程都有4GB的地址空间,默认情况下,2GB为操作系统所有,2GB为应用程序使用。
498)this.style.width=498;">
Exchange Server在运行过程中,会频繁的在它所拥有的2GB用户地址空间中分配和释放内存。这样会引起内存地址空间的“碎片”:内存地址中的空余的空间变得不连续。上述的四个计数器中,VM Largest Block Size表示用户地址空间中最大的连续空余内存块;VM Total 16MB Free Blocks表示尺寸在16MB以上的连续空余内存块的数目;VM Total Free Blocks表示总的空余内存块的数量;VM Total Large Free Block Bytes表示空余内存的总数量。
当VM Largest Block Size的数量小于32M时,事件察看器中会记录下编号为9582 的Warning日志;当VM Total 16MB Free Blocks为零也就是最大可分配内存空间小于16MB时,事件察看器中会记录下编号为9582 的Error日志。
Source: MSExchangeIS
Category: Performance
ID: 9582
Type: Warning/Error
Description:
The virtual memory necessary to run your Exchange server is fragmented in such a way that performance may be affected. It is highly recommended that you restart all Exchange services to correct this issue.
这种情况出现,说明Exchange Server的虚拟地址空间中已经存在了大量的碎片,由于无法满足内存的分配,Exchange Server的性能和稳定性都会出现问题。
对于这类问题,大家可以参考微软的知识库文档“Troubleshoot Virtual Memory Fragmentation in Exchange 2003 and Exchange 2000”,其文档代号为325044。这篇文章详细地分析了虚拟内存碎片产生的原因和应对办法。
为了满足服务器软件对内存的要求,微软公司的Windows 2000 Advanced Server和Data Canter版本的操作系统支持把用户地址空间扩大为3GB,这样可以有效的缓解虚拟内存碎片的问题。该项功能需要在系统分区的boot.ini中做一定的修改才可以开启,具体的操作方法请参考微软文档“A Description of the 4 GB RAM Tuning Feature and the Physical Address Extension Switch”其文章代号为291988。
对于Exchange 2000 Server,当服务器安装了1GB以上的RAM时,微软推荐开启操作系统的3GB开关,否则可能会有性能上的问题。参考文档:
266096 Exchange requires /3GB switch with more than 1 GB RAM
328882 Exchange memory use and the /3GB switch