本文讨论了 Exchange 2003 中的虚拟内存碎片。本文还包含了有关 Exchange 2003 中包括的帮助防止产生碎片的增强功能的信息。
虚拟内存碎片
Exchange 2003 信息存储进程 (Store.exe) 运行时,它会动态地使用虚拟内存。像很多大型程序一样,信息存储进程也可能会遇到虚拟内存碎片,因为内存会在服务器上运行的其他进程之间交换。当连续的可用内存块的大小和数量达到某一特定阈值时,会产生虚拟内存碎片。此现象会对基于 Exchange 2003 的服务器的性能产生负面影响,并且可能会阻止数据库装入。此外,如果扩展服务器以便处理更多用户和更大的负载量,服务器运行时可能会出现虚拟内存不足。
Exchange 2003 是为使用虚拟内存而设计的,不考虑服务器上安装的物理内存 (RAM) 量。例如,要装入数据库,必须具有 10 兆字节 (MB) 的连续虚拟内存块。如果虚拟内存被分为很多碎片,而每个可用虚拟内存块的大小正好等于或小于 10 MB,那么,除非您重新启动服务器,否则无法装入数据库。再例如,基于 Exchange 2003 的服务器在群集环境中运行时需要有 16 MB 连续虚拟内存才能完成故障转移过程。如果没有 16 MB 的连续虚拟内存可用,故障转移操作将不会成功完成。
备注:此信息存储进程是 Exchange 2003 服务器上最占用内存的进程。
识别虚拟内存碎片
在应用程序事件日志中,虚拟内存碎片问题通常会与事件 ID 9582 同时出现。在某些情况下,可以放心地忽略事件 ID 9582 消息。但是,如果出现缺少虚拟内存的情况,您可能就会发现服务器性能下降,并收到有关邮件处理的错误信息。例如,当达到虚拟内存碎片阈值级别时,应用程序事件日志中可能会出现与下列消息类似的事件 ID 9582 警告消息和错误信息:
Category:Performance
Event ID: 9582
Type:Warning
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.
Category:Performance
Event ID: 9582
Type:Error
Description:
The virtual memory necessary to run your Exchange server is fragmented in such a way that normal operations may start to fail.It is highly recommended that you restart all Exchange services to correct this issue.
Exchange 2003 中为防止产生虚拟内存碎片所做的改进
为了帮助防止产生碎片,Exchange 2003 做了以下改进:
•在 Microsoft Exchange 2000 Server 中,可以通过修改 Microsoft Active Directory 目录服务中的 msExchESEParamCacheSizeMax 值来更改分配给存储的数据库缓存大小。在 Exchange 2003 中,如果在 Boot.ini 文件的操作系统行中使用 /3GB 开关,则将动态地计算 msExchESEParamCacheSizeMax 的值。/3GB 开关表示在服务器上安装了较大物理内存量,例如 1 GB 以上。如果 Boot.ini 文件中出现 /3GB 开关,那么说明存储数据库缓存设置为 896 MB。如果 Boot.ini 文件中未出现 /3GB 开关,那么说明存储数据库缓存设置为 576 MB。
•在虚拟内存逐渐减少并且空闲连续虚拟内存的最大可用块小于 32 MB 的情况下,您可以安排时间停机,以重新启动服务器或排除服务器故障。
•要在运行 Microsoft Windows Server 2003 且 RAM 超过 1 GB 的计算机上进一步优化内存分配,Microsoft 建议您确保 Boot.ini 文件的操作系统行中出现下列条目:
/3GB /USERVA=3030
请注意,在基于 Windows Server 2003 的计算机上只能使用此开关。
如果虚拟内存碎片问题仍然存在,可能必须执行其他的故障排除操作。 .
TAG: Exchange 2003 内存碎片