Exchange Server 2003 处理器和内存可伸缩性

 

上一次修改主题: 2011-01-24

作者:Nino Bilic

本文讨论了有关在运行 Microsoft® Exchange Server 的服务器上使用不同 Boot.ini 开关的问题。除非另有说明,本文中提到的开关是指在运行 Microsoft Windows Server™ 2003 的服务器上使用的开关。

在高峰工作时段,服务器上处理器的工作负载应保持在 60% 左右。此百分比级别考虑到了极端负载的情况。如果处理器的使用持续超过 75%,我们就认为处理器性能是一个瓶颈。

Exchange 可充分利用多处理器,在很多情况下,使用有更多处理器的服务器会提高性能。但是,处理器数量和性能之间的关系是复杂的。如果服务器有太多的处理器,则从附加处理器中获得的好处可能不足以弥补与上下文切换关联的开销。处理器的最佳数量在一定程度上取决于服务器所拥有的角色。例如,一台驻留多个 MAPI 连接的后端邮箱服务器可能会高效使用一台八处理器计算机。相比之下,一台用于驻留 Microsoft Outlook® Web Access 用户的服务器可以更好地使用一台四处理器计算机。

有关不同处理器如何运行的详细信息,请参阅 Exchange Server 2003 性能和可伸缩性功能

当在计算机基本输入/输出系统 (BIOS) 中启用超线程时,Exchange Server 可以使用具有四个物理处理器的计算机来提高性能。如果在基于 Xeon MP 并以 1.4 GHz 或更快速度运行的计算机上启用超线程,则在运行 Exchange Server 时,处理器效率可提高 25%。相对于计算机成本而言,拥有四个 Xeon MP 处理器(1.4 GHz 或更快)和 400 MHz 主机总线的计算机可提供高级别的可伸缩性。我们建议使用这些计算机运行 Exchange Server 2003 或 Exchange 2000 Server。

综合考虑价格和 Exchange 服务器的性能,四处理器服务器可提供最佳的整体价值。

Exchange Server 可以充分利用拥有八个物理处理器的计算机。与具有相同 CPU 速度的四处理器计算机相比,这些计算机可将可伸缩性提高 75%。通常情况下,在拥有八个处理器的计算机上,在 CPU 成为瓶颈之前会达到其他系统限制。因为会首先达到其他限制,Exchange Server 无法完全利用 CPU。当在 Exchange 服务器上运行 CPU 密集型进程(如上下文索引或防病毒扫描)时,我们建议您使用拥有八个处理器的计算机。

在拥有八个物理处理器的计算机上,Exchange Server 可实现良好的可伸缩性。对于拥有八个以上物理处理器的计算机,可使用硬件分区功能将计算机分割成多个八处理器计算机或多个四处理器计算机。作为可选方案,可将 Store.exe 进程的进程相关性设置为只有八个处理器。

为了优化内存使用情况并提高内存使用效率,可使用通过 Microsoft Windows® Boot.ini 文件中的开关提供的几个调整选项。请注意,所有 Boot.ini 开关更改都需要重新启动才能生效。此外,通过使用 Boot.ini 开关实现的功能都是 Windows 功能,而不是 Exchange 功能。

一个典型的后端邮箱服务器将消耗 3 GB 到 4 GB 的物理内存。Exchange Server 不使用实例、物理地址扩展 (PAE) 或地址窗口化扩展插件 (AWE)。因此,4 GB 的随机存取内存 (RAM) 是 Exchange Server 计算机可以有效利用的最大内存量。

请注意,支持在启用 PAE 的情况下运行。尽管 Exchange Server 无法利用超过 4 GB 的内存,但其他功能可能依赖 PAE 内核。

如果 Exchange Server 2003 服务器安装了 1 GB 或更多的内存,并且该计算机存储了邮箱或公用文件夹,请确保将 /3GB 开关添加到服务器上的 Boot.ini 文件中。默认情况下,Windows Server 2003 和 Windows 2000 Advanced Server 操作系统将保留 2 GB 的虚拟地址空间用于系统用途,并将另外 2 GB 用于用户地址空间。在启动时,将为每个进程分配此范围内的虚拟地址。通常情况下,进程的实际内存使用量(工作集)远远小于分配给该进程的地址空间。在运行 Exchange Server 2003 的计算机(具有 1 GB 或更多内存)上,应该修改 Windows Server 2003 和 Windows 2000 Advanced Server 操作系统,从而为每个进程提供 3 GB 的用户地址空间。可以使用 Boot.ini 文件中的 /3GB 开关执行此操作。

请记住,尽管使用 /3GB 有利于 Exchange 的顺利运行,但是内核内存资源已压缩至 1 GB 的虚拟地址空间。这意味着,页面缓冲池和非页面缓冲池的最大大小都将显著降低。此外,将虚拟地址映射到物理内存的可用系统页表条目 (PTE) 大约会从 20 万减少至 1.5 万。如果服务器在可用系统 PTE 数量较低的情况下运行,就可能出现不稳定的情况,包括停止错误。Windows Server 2003 和 Windows 2000 Server 都提供了增加可用系统 PTE 数量的机制。

对于基于 Windows 2000 Advanced Server 的计算机,应在下面的注册表子项中配置 SystemPages 注册表项:

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\SystemPages

SystemPages 注册表项的 DWORD 值设置为 0x7918,用十进制符号表示是 31000。在一些文章,您可能会看到建议使用 0xFFFFFFFF。虽然后者是一个有效的设置,并且可以用来获得最大数量的可用系统 PTE,您必须记住它是使用从页面缓冲池获得的内存来补充可用系统 PTE 的数量。在如今不断扩展的环境中,页面缓冲池资源对运行 Exchange 服务器是至关重要的。因此,您需要认真平衡所有内核内存对象的资源。在基于 Windows Server 2003 的服务器上,无需也不建议进行相同的注册表更改,因为可以使用后面部分介绍的 /USERVA 开关来实现此功能。

如果运行的是 Windows 2000 Server,则不要设置 /3GB 开关。Windows 2000 Server 不支持此内存调整开关。虽然服务器不会生成错误信息(如果执行此操作),设置此开关将导致存在一个虚假内存地址空间。如果某个进程尝试访问此较高的地址空间,则会出现停止错误,并且服务器会停止响应。

/USERVA 开关是 Windows Server 2003 中新增的功能,使用它可以更精确地在用户模式和内核模式之间划分虚拟地址空间。这种行为使您可以扩展服务器以满足更多用户的需求,而不存在用尽内核资源的风险。通过使用 /USERVA=3030,将为 PTE 内核另外分配 42 MB 的内存。然而,该值可能需要进行更多调整。您可以使用性能监视器来监视 PTE 消耗情况。监视可用系统页表条目计数器。可在内存对象下找到该计数器。如果性能监视器报告的值为 8000 或更小,则必须降低 /USERVA 值 (3030) 以避免系统出现不稳定的情况。

note注意:
Microsoft 产品支持服务部门强烈建议将 /USERVA 开关的内存使用范围限制在 2800 到 3030 之间。该范围足以提供相当大的系统 PTE 池,以解决当前发现的所有问题。通常情况下,/userva=2800 设置提供的系统 PTE 数尽可能接近其最大可用数。请记住,当降低 /USERVA 值时,Exchange 存储进程获得的较大地址空间也会随之缩小。为使 Exchange 和底层操作系统均获得最佳性能,必须认真地进行调整和监视。

下表概述了如何以及何时使用 /3GB 和 /USERVA 开关的情况。这些内容适用于 Exchange Server 2003 Service Pack 1 (SP1) 和 Windows Server 2003 SP1。

 

Exchange Server 2003 服务器角色 物理内存配置 向 Boot.ini 添加的内容

邮箱

>1 GB**

/3GB /USERVA=3030

公用文件夹

>1 GB**

/3GB /USERVA=3030

前端服务器 (FE)

>1 GB**

SMTP 网关/桥头

>1 GB**

SMTP 网关/桥头(信封日记功能*)

>1 GB**

/3GB /USERVA=3030

MTA/X.400/第三方连接器桥头*

>1 GB**

/3GB /USERVA=3030

* 信封日记功能、MTA 和第三方连接器可通过 Store.exe 进程发送网关和桥头电子邮件,从而使系统从 /3GB 中获益。

** /3GB 和 /USERVA=3030 开关不能在 RAM 少于 1 GB 的 Exchange 服务器上使用。

当使用 /3GB 和 /USERVA 开关时,请考虑以下内容:

PAE 提高了 IA32 处理器处理大于 4 GB 的物理内存的能力。Microsoft Windows Server 2003 企业版、Microsoft Windows Server 2003 Datacenter 版、Microsoft Windows 2000 Advanced Server 和 Microsoft Windows 2000 Datacenter Server 可以使用 PAE 充分利用超过 4 GB 的物理内存。要启用 PAE,请使用 Boot.ini 文件中的 /PAE 开关。支持热插拔内存且在 Windows Server 2003 操作系统上运行的较新服务器会自动加载 PAE 内核。此外,支持硬件强制数据执行保护 (DEP) 且在 Windows Server 2003 SP1 操作系统上运行的服务器也会加载 PAE 内核。过去这常常造成混淆,因为虽然并未在 Boot.ini 中设置 /PAE,服务器却被标识为使用了 PAE 内核。

当系统上使用更多的物理内存时,将内存分页到磁盘的进程会显著增加,并且会对性能产生负面影响。Windows Server 2003 和 Windows 2000 Server 内存管理器使用 PAE 向操作系统提供更多的物理内存。这会降低打开和退出页面文件时切换内存的需求,从而提高了性能。程序本身并不知道实际的内存大小。所有的内存管理和 PAE 内存分配都由内存管理器处理,与运行的程序无关。

当使用 /3GB 开关时,上述信息对于运行的程序有效。要求占用大量内存的程序更有可能让其内存的更多部分保留在物理内存中,而不是保留在分页的虚拟内存中。这提升了能够使用 /3GB 开关的程序的性能。例外情况是当 /3GB 开关和 /PAE 开关一起使用时。在这种情况下,操作系统将不使用任何超过 16 GB 的内存。此行为是由内核虚拟内存空间考虑导致的。因此,如果系统使用 Boot.ini 文件中的 /3GB 项重新启动,并且系统的物理内存超过 16 GB,则操作系统不会使用额外的物理 RAM。在不使用 /3GB 开关的情况下重新启动计算机,将能够使用所有的物理内存。

note注意:
只有当服务器使用了热插拔内存设备,Windows Server 2003 企业版和 Windows Server 2003 Datacenter 版才会自动启用 PAE。在这种情况下,您不必在配置为使用热插拔内存设备的系统上使用 /PAE 开关。在所有其他情况下,您必须使用 Boot.ini 文件中的 /PAE 开关来利用超过 4 GB 的内存。

随着向服务器添加更多的内存,内核资源的要求也会增加。例如,系统 PTE 将跟踪从虚拟内存地址到物理内存地址的位置。拥有的物理内存越多,使用的系统 PTE 就会越多,从而导致可用系统 PTE 减少。较新服务器预先配置了 6 GB 或 8 GB 的内存。对于专门用于 Exchange 的服务器,作为最佳实践,应该考虑移除内存中超出 4 GB 的部分或使用 Boot.ini 文件中的 /MAXMEM 开关限制操作系统识别的内存。如果不进行上述操作,不仅会浪费内存,而且还会因内核内存资源的限制进一步导致不稳定情况的出现。

若要确定在计算机启动时是否加载 PAE 内核,可以查看下面的注册表子项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PhysicalAddressExtension

如果 PhysicalAddressExtension DWORD 值设置为 00000001,则在计算机启动时会加载 PAE 内核。此注册表项是操作系统启动时设置的。用户不能配置此参数。

过去很长一段时间里,在设置了 /3GB 开关的 Exchange 服务器上使用 /NOPAE 开关禁用 PAE 一直是一种最佳实践。这项建议的存在是因为没有使用 PAE 内核测试 Exchange Server 2003 或 Exchange 2000 Server 中,并且 PAE 内核不是 Exchange 服务器上所必须的。现在,新的硬件和软件功能要求加载 PAE 内核。例如,带有 Lindenhurst 或 Twincastle 芯片集的服务器要求加载 PAE 内核,否则,将无法识别所有已安装的内存。另一个例子是,Windows Server 2003 SP1 支持硬件强制 DEP。如果没有加载 PAE 内核,就无法启用此功能。

Exchange Server 产品组测试的结果表明,现在,允许将 PAE 内核加载到 Exchange 服务器上是一种最佳实践。因此,不再需要 /NOPAE 开关,除非要解决怀疑 PAE 内核是诱发因素的具体问题。在某些运行 Windows Server 2003 SP1 的服务器上,/NOPAE 开关可能是无效的,这是因为硬件强制 DEP(使用 /NoExecute 开关进行启用)将覆盖这一用来禁用 PAE 的指令。如果需要,可以使用 /Execute 开关来禁用 PAE 内核。有关说明,请参阅 Microsoft 知识库文章 900524“如何防止在 Windows Server 2003 Service Pack 1 及更高版本的 Windows Server 2003,或 Windows XP Service Pack 2 及更高版本的 Windows XP 中加载 PAE 内核”。

可以在 Exchange Server 2003 服务器上更改其他一些设置来优化内存的使用情况。其中一些设置如下所示:

  • 通过更改 HeapDeCommitFreeBlockThreshold 注册表值使虚拟地址空间最大化。此注册表设置对后端 Exchange 服务器的运行状况和稳定性至关重要。
  • 通过更改 Active Directory® 目录服务来更改存储数据库缓存大小(又称为扩展存储引擎 (ESE) 缓冲区大小)。

有关与内存有关设置的详细信息,请参阅 Microsoft 知识库文章 815372“如何优化 Exchange Server 2003 中的内存使用”。

Exchange Server 2003 服务器的应用程序日志中可能记录事件 9665(警告事件)。事件的内容如下所示:

Event Type: Warning

Event Source: MSExchangeIS

Event Category: General

Event ID: 9665

Description:

The memory settings for this server are not optimal for Exchange.

这是 Exchange Server 2003 中的新功能的一部分,能够在启动时检查数项已知的内存配置设置。

如果记录了事件 9665,有关疑难解答的详细信息,请参阅 Microsoft 知识库文章 815372“如何优化 Exchange Server 2003 中的内存使用”。

请考虑以下常见问题 (FAQ)。

如果 Exchange Server 2003 服务器安装了 1 GB 或更多的内存,并且该计算机存储了邮箱或公用文件夹,请确保将 /3GB 开关添加到服务器上的 Boot.ini 文件中。有关何时使用此开关的详细信息,请参阅本文档中“/3GB 和 /USERVA 概述(表视图)”一节。

Exchange 服务器无法有效利用超过 4 GB 的 RAM。Exchange Server 不使用实例、PAE 或 AWE。因此,4 GB RAM 是 Exchange Server 可以有效利用的最大内存量。

Exchange Server 不使用实例、PAE 或 AWE。Exchange Server 2003 支持 /PAE 开关,但即使设置了 /PAE 开关,Exchange 服务器也无法利用超过 4 GB 的 RAM。

我们建议和支持在启用了 PAE 内核的 Windows Server 2003 上运行 Exchange Server 2003。为了确保系统的稳定性,请为 Windows Server 2003 安装最新的修补程序或安装 Service Pack 1。在未进行此配置的情况下运行 PAE 内核可能会导致存储故障。

如果服务器支持热插拔内存设备,则 Windows Server 2003 企业版和 Windows Server 2003 Datacenter 版会自动启用 PAE。这种情况下,您不必使用 /PAE 开关。切勿在 Exchange 服务器上使用 /NOPAE 开关,因为此开关可能会造成意想不到的负面影响。使用 /NOPAE 开关可导致以下两个问题:

  • 在运行 Windows Server 2003 SP1 的服务器上禁用了硬件强制 DEP。
  • 使用 Lindenhurst 或 Twincastle 芯片集的服务器无法识别所有物理 RAM。

此外,在安装了 Windows Server 2003 SP1 的服务器上,如果通过 /NoExecute 开关启用了硬件强制 DEP,则 /NOPAE 开关将会失效。

使用 Microsoft Exchange Server 最佳实践分析工具。此工具已经过更新,从而包含了本文中介绍的支持策略更改。有关详细信息,请参阅 Microsoft Exchange Server Best Practices Analyzer Tool(英文网页)。

我们支持但不建议在启用了 PAE 的 Windows 2000 Server 上运行 Exchange。需要安装修补程序 838647 以提供支持。Windows 2000 Server 中没有要求启用 PAE 的安全功能,因此,在 Windows 2000 Server 上为 Exchange 运行 PAE 的唯一好处是能够在基于 PCI-Express 的较新服务器上启用所有内存访问。这不是一个很好的测试方案,因此不推荐使用。

在任务管理器中可以看到的 Store.exe 内存增长不一定表明出现了问题。您需要确定服务器上是否存在任何性能问题,如果没有出现性能问题,则没有任何问题。有关详细信息,请参阅 Why is Exchange Store.exe so RAM hungry?(英文网页)

 
显示: