优化 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 设置。以下各节包含对上述每个设置的建议。

note注意:
如果要关闭事件 9665 的日志记录,可以创建下表中所示的注册表项。

关闭内存配置检查的注册表项

路径

HKLM\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem\

参数

Suppress Memory Configuration Notification

类型

REG_DWORD

设置

1

note注意:
在运行 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)。

important重要提示:
/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 服务。

important重要提示:
注意不要选择 msExchESEParamCacheSizeMin 值。

下表汇总了最大缓冲大小的默认值和推荐值。该值用页数表示,为实现最高效率,应将它设置为 8192 的整数倍。

缓冲区大小默认值和建议

/3GB 服务器上的默认大小

229376 (896 MB)

非 /3GB 服务器上的默认大小

147456 (576 MB)

建议最大值

311296 (1.2 GB)

受地址空间限制的超大型服务器

196608 (768 MB)