优化 Exchange Server 2003 的内存使用
上一次修改主题: 2006-08-16
本主题包含有关监视和优化服务器上的内存使用情况的信息。
监视内存使用
可以监视事件查看器应用程序日志以及性能日志和警报(“管理工具”子菜单上的“性能”),以检查虚拟内存是否存在问题。当最大可用虚拟内存块减少到 32 MB 时,应用程序日志中会出现警告 9582。如果看到此警告,请在下次重新启动 Exchange 存储进程。如果最大可用块减少到 16 MB,则会再次出现错误 9582;这意味着服务器的运行可能失败,应该尽快重新启动服务器。如果对上述事件没有做出响应,可能会导致个别邮件传递和 IMAIL 转换失败(12800 事件)。
在“性能日志和警报”中,监视下列计数器:
- VM Largest Block Size counter in the MSExchangeIS object: 正常服务器的最大可用块应在 200,000,000 字节 (200 MB) 以上。如果低于此值,请密切监视服务器。
- Pool Pages Bytes in the Memory object: 如果数字大于 200 MB,则说明存在问题(除非正在运行备份)。在备份过程中,缓存管理器中的每一页都由分页池来备份。
- Pool Nonpaged Bytes in the Memory object: 如果数字大于 100 MB,则说明存在问题。
- Free System Page Table Entries in the Memory object: 如果数字小于 3000,则说明存在问题。
- Working Set in the Process object: 如果呈上升趋势,则说明有潜在的内存泄漏。
如果有迹象表明,服务器的虚拟地址空间较少,则应调整下列设置。如果没有为 Microsoft® Exchange 优化这些设置,事件查看器中就会出现事件 9665。
- 如果服务器运行 Windows® 2000 Advanced Server 或 Windows Server™ 2003,并且拥有 1 GB 或更多的物理内存,请按下面的描述在 Boot.ini 文件中设置 /3GB 开关。
- 如果服务器运行的是 Windows Server 2003(任何版本),请按下面的描述配置 /USERVA 开关和 SystemPages 注册表项。如果服务器运行的是 Windows 2000,请确保安装了 Windows 2000 SP3 或更高版本。
- 如果服务器有 1 GB 或 1 GB 以上的物理内存,请按下面的描述设置 HeapDeCommitFreeBlockThreshold 注册表参数。
- 根据需要,按下面的描述调整存储数据库缓存大小。
事件 9665
Exchange 在存储进程启动时执行最佳内存配置检查。如果内存设置不是最佳设置,事件查看器中将出现事件 9665。在下列情况下会出现此消息:
- 服务器运行 Windows 2000,并且注册表中设置的 SystemPages 值不在 24000 至 31000 范围之内。
- 服务器的内存为 1 GB 或 1 GB 以上,但没有 /3GB 开关。
- 服务器运行 Windows Server 2003,拥有 1 GB 或 1 GB 以上的内存,并且已设置 /3GB 开关,但没有 /USERVA 设置或未将其设置为 3030。
如果出现此事件,请检查注册表中的 SystemPages 和 HeapDeCommitFreeBlockThreshold 设置,以及 Boot.ini 文件中的 /3GB 开关和 /USERVA 设置。以下各节包含对上述每个设置的建议。
注意: |
---|
如果要关闭事件 9665 的日志记录,可以创建下表中所示的注册表项。 |
关闭内存配置检查的注册表项
路径 |
HKLM\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem\ |
参数 |
Suppress Memory Configuration Notification |
类型 |
REG_DWORD |
设置 |
1 |
注意: |
---|
在运行 Microsoft® Small Business Server 的服务器上不会进行内存配置检查。 |
设置 /3GB 开关
默认情况下,Windows 2000 Advanced Server 和 Windows Server 2003 为诸如 Store.exe 这样的用户模式进程分配 2 GB 的虚拟地址空间。如果服务器有 1 GB 或 1 GB 以上的物理内存,请在 Boot.ini 文件中设置 /3GB 开关,以增加虚拟地址空间。
应只在满足下列条件的服务器上设置 /3GB 开关:
- 存放 Exchange 2003 邮箱或公用文件夹的服务器。
- 服务器的物理内存不低于 1 GB。
建议不要在未包含公用文件夹或邮箱存储的 Exchange 服务器上设置此开关。
有关 /3GB 开关的详细信息,请参阅 Microsof 知识库文章 266096“XGEN:当物理 RAM 超过 1 GB 时 Exchange 2000 需要 /3GB 开关”(https://go.microsoft.com/fwlink/?linkid=3052&kbid=266096)。
重要提示: |
---|
/3GB 开关设计用于 Windows 2000 Advanced Server 和所有版本的 Windows Server 2003。请不要在 Windows 2000 标准版中设置 /3GB 开关。 |
配置 /Userva 和 SystemPage
如果服务器运行的是 Windows 2000,请将 SystemPages 注册表项设置为 24000 和 31000 之间的值。SystemPages 注册表项位于以下路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\SystemPages
如果服务器运行的是 Windows Server 2003,请将 SystemPages 值设置为零,并在 Boot.ini 文件中设置 /USERVA=3030 参数。通过这些设置,就可以在服务器上输入更多的系统页表条目,这对于不断增长的系统是很关键的。
有关其他信息,请参阅知识库文章 810371“XADM:在基于 Windows 2003 Server 的 Exchange Servers 上使用 /Userva 参数”(https://go.microsoft.com/fwlink/?linkid=3052&kbid=810371)。
设置 HeapDeCommitFreeBlockThreshold 注册表项
HeapDeCommitFreeBlockThreshold 注册表项控制着堆管理器回收(或释放)内存之前所需的可用空间量。默认值是零,这意味着,堆管理器将回收变为可用的所有 4-KB 页。随着时间的推移,虚拟地址空间会分成许多碎片。在物理内存为 1 GB 或大于 1 GB 的服务器上,可以将注册表项设置为更高的值,以减少或消除碎片。请按下表所示设置注册表项,然后重新启动服务器。有关 HeapDeCommitFreeBlockThreshold 注册表项的详细信息,请参阅知识库文章 315407“XADM:HeapDeCommitFreeBlockThreshold 注册表项”(https://go.microsoft.com/fwlink/?linkid=3052&kbid=315407)。
HeapDeCommitFreeBlockThreshold 注册表项的设置
路径 |
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager |
参数 |
HeapDeCommitFreeBlockThreshold |
类型 |
REG_DWORD |
默认值 |
0 |
建议设置* |
262144 |
* 该值是以十进制表示的块数。建议值是 262144,该值的十六进制值为 0x00040000。
调整存储数据库缓存大小
数据库事务在提交到数据库之前会在存储数据库缓存(也称为可扩展存储引擎缓冲区)中进行缓存。默认情况下,如果在服务器上设置了 /3GB 开关,则 Exchange 2003 将分配 896 MB;如果没有设置 /3GB 选项,则分配 576 MB。在下列情况下,调整最大缓冲区大小可提高性能:
- 如果服务器运行的是 Exchange 2003 和其他服务器端应用程序,请减小缓冲区,以限制 Exchange 对内存的使用。
- 在内存大于 2 GB 的服务器上,请增大缓冲区大小(最大不能超过 1200 MB)。
在增加最大缓冲区大小之前,请使用“性能日志和警报”来监视正常负载下 Virtual Bytes 计数器(在 Process 对象中)的存储情况。Virtual Bytes 计数器显示 Store.exe 进程使用的虚拟地址空间的当前大小(字节)。如果设置了 /3GB 开关,该值应在 2.8 GB 以下,如果没有设置 /3GB 开关,则在 1.8 GB 以下。如果该值较高,请不要增加最大缓冲区大小。如果该值较低,则可以增加最大缓冲区大小,但不得超过 1,200 MB。例如,如果设置了 /3GB 开关,并且较重负载下的虚拟字节数为 2.5 GB,则可以将最大缓冲区大小增加大约 300 MB。
请注意,在地址空间出现碎片化问题的服务器上,增大缓冲区大小可能会对服务器性能产生负面影响。缓冲区越大,意味着虚拟地址空间消耗越多;增大缓冲区可能会导致系统不稳定。
要调整最大缓冲区大小,请使用 Active Directory 服务接口 (ADSI) 编辑工具来修改 msExchESEParamCacheSizeMax 值。有关如何修改 msExchESEParamCacheSizeMax 的值的详细信息,请参阅知识库文章 266768“XSTR:如何修改存储数据库的最大缓存”(https://go.microsoft.com/fwlink/?linkid=3052&kbid=266768)。设置该值后,请等待 Microsoft Active Directory® 目录服务来复制整个林中的值。然后,重新启动 Microsoft Exchange Information Store 服务。
重要提示: |
---|
注意不要选择 msExchESEParamCacheSizeMin 值。 |
下表汇总了最大缓冲大小的默认值和推荐值。该值用页数表示,为实现最高效率,应将它设置为 8192 的整数倍。
缓冲区大小默认值和建议
/3GB 服务器上的默认大小 |
229376 (896 MB) |
非 /3GB 服务器上的默认大小 |
147456 (576 MB) |
建议最大值 |
311296 (1.2 GB) |
受地址空间限制的超大型服务器 |
196608 (768 MB) |