未针对 Exchange 优化此服务器的内存设置
如何优化 Exchange Server 2003 中的内存使用
警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。本文介绍了在运行 Exchange Server 2003 的计算机上对内存使用的优化。
如果在运行 Microsoft Exchange Server 2003 的服务器上安装了 1 GB 或更多的物理内存 (RAM),则必须保证 Exchange 2003 可以有效利用该内存。
注意:Exchange 2003 在存储进程启动时执行最优内存配置检查。如果内存设置不是最优的,事件查看器中将会出现事件 9665。
如果满足下列条件之一,就会出现此消息:
- 服务器正在运行 Microsoft Windows 2000 Server 的某个版本,且注册表中设置的 SystemPages 值超出了 24000 到 31000 这一范围。
注意- SystemPages 子项位于以下位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\SystemPages
- SystemPages 子项的有效值仅限于:
- 系统计算的超过 180,000 的值
- 零 (0)
- 0xFFFFFFFF
- 服务器正在运行 Microsoft Windows 2000 Advanced Server 或 Microsoft Windows 2000 Datacenter Server,具有 1 GB 或更大的物理内存,但是没有在 boot.ini 文件中设置 /3GB 开关。
- 服务器正在运行 Microsoft Windows Server 2003 Standard Edition、Microsoft Windows Server 2003 Enterprise Edition 或 Microsoft Windows Server 2003 Datacenter Edition,且注册表中的 SystemPages 值被设置为非 0 值。
- 服务器正在运行 Microsoft Windows Server 2003 Standard Edition、Microsoft Windows Server 2003 Enterprise Edition 或 Microsoft Windows Server 2003 Datacenter Edition,具有 1 GB 或更多的物理内存,设置了 /3GB 开关,但 boot.ini 文件中不存在 /USERVA 设置。
- 服务器正在运行 Microsoft Windows 2000 Server 或 Microsoft Windows Server 2003 的某个版本,且注册表中的 HeapDeCommitFreeBlockThreshold 值被设置为 0x00040000 以外的值。
运行 Microsoft Small Business Server 的服务器上不会进行内存配置检查。当引发 9665 事件时,一个 DWORD 值会作为附加数据写入事件日志中。
如果您要关闭Exchange内存配置检查,可以创建以下注册表项:
参数:Suppress Memory Configuration Notification
类型:REG_DWORD
设置:1
注意
- 对于不包含任何邮箱或公用文件夹(如邮件网关)的 Exchange Server 计算机,建议您不要在 boot.ini 中设置 /3GB 开关,这与已安装的物理内存大小无关。
- 对于同时还充当 Active Directory 域控制器或全局编录服务器的 Exchange Server 计算机,也建议不要在 boot.ini 中设置 /3GB 开关。建议使用专门的 Active Directory 域控制器或全局编录服务器。
- 因为 Microsoft Small Business Server 是作为集成的域控制器和 Exchange 服务器安装的,所以在 Small Business Server 环境中运行 Exchange Server 2003 时,也不建议设置 /3GB 开关。但是,本文中描述的其他概念和设置对于 Microsoft Small Business Server 环境中的 Exchange Server 2003 同样适用。
本文的下列各部分包含所有这些设置的推荐设置。
虚拟地址空间概念
Exchange 2003 中的 Exchange 信息存储 (Store.exe) 进程可以处理的内存容量是有限的,这与硬件配置、服务器上的数据库容量以及用户数量无关。此容量称为虚拟地址空间。大多数情况下,信息存储使用的这一虚拟地址空间决定 Exchange Server 2003 邮箱服务器的总体性能和可伸缩性。对于中小型服务器,Exchange Server 2003 会自动实现最佳平衡。但是,对于大型服务器,您可能需要手动调整一些优化参数。
如果 Exchange Server 2003 计算机安装了 1 GB 或更多的内存,且计算机是邮箱或公用文件夹的宿主,请确保向服务器上的 Boot.ini 文件添加 /3GB 开关。如果服务器上没有任何邮箱或公用文件夹(如邮件网关),建议不要使用 /3GB 开关。默认情况下,Microsoft Windows 2000 Advanced Server 和 Windows Server 2003 操作系统保留 2 GB 虚拟地址空间供内核模式使用,保留 2 GB 供用户模式使用。特定进程的虚拟地址空间是在启动时分配的,并且在操作期间会随着内存使用的增加而增加。通常情况下,进程实际使用的内存(工作集)远远少于分配给该进程的地址空间。在安装了 1GB 或更多内存且运行 Exchange Server 2003 的计算机上,必须修改 Windows 2000 Advanced Server 和 Windows Server 2003 操作系统,以便留出 3 GB 的用户模式内存空间。您可以通过在 Boot.ini 文件中使用 /3GB 开关来实现此目的。要在基于 Windows 2000 Advanced Server 的计算机上使用该设置,还必须在以下注册表子项中配置 SystemPages 注册表:
将 SystemPages 注册表项设置为 0xFFFFFFFF(十六进制)的 DWORD 值。此注册表更改不是必需的,请不要在基于 Windows 2003 的服务器上进行此更改,因为该功能是通过使用 Userva 开关(参见下文中的一节)实现的。
如果您运行的是 Windows 2000 Server Standard Edition,请不要设置 /3GB 开关。Windows 2000 Server Standard Edition 不支持此内存调整开关。如果您设置此开关,服务器不会生成错误信息,但是会导致假内存地址空间的存在。如果某个进程试图访问这个较大的地址空间,蓝屏上则会出现一条“Stop”错误信息,并且服务器将停止响应。
注意:Windows Server 2003 的所有版本(包括 Windows Server 2003 Standard Edition)都支持 /3GB 调整开关。
有关如何设置 /3GB 开关的更多信息
当满足下列所有条件时,必须更改运行 Microsoft Exchange 2000 Server 的计算机上的总体内存分配:
- 计算机包含 1 GB 或更多的物理随机存取内存 (RAM)。
- 计算机是邮箱或公用文件夹的宿主。
如果计算机上没有任何邮箱或公用文件夹(如邮件网关),则不必进行更改。
在安装了 Windows 2000 Advanced Server 后,必须修改 Boot.ini 文件并将 /3GB 参数添加到启动行中。例如:
[Boot Loader]Timeout=30Default=multi(0)disk(0)rdisk(0)partition(2)\WINNT[Operating Systems]multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Advanced Server" /fastdetect /3GB 注意:为了便于阅读,上面的某些行已折行。
注意:如果您运行的是 Windows 2000 Server、Microsoft Small Business Server 2000 或 Microsoft BackOffice Server 2000,则不要添加 /3GB 开关。如果已经在这些操作系统上的 Boot.ini 文件中添加了 /3GB 开关,必须将其删除,因为该开关可能会在这些系统上增加虚拟内存碎片。该开关仅设计用于 Windows 2000 Advanced Server 及更高版本。
如果在基于 Windows Server 2003 的计算机上运行 Exchange 2003,且设置了 /3GB 开关,则 Microsoft 建议您在 Boot.ini 文件中设置 /USERVA=3030 参数。这样,服务器上就会有更多的系统页表项目 (PTE)。 有关 /USERVA 开关的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
在使用了 /3GB 参数时,您可以使用此参数来自定义分配到进程的内存量。这允许有更多的页表项 (PTE) 核心内存,但是仍维护几乎达 3 GB 的进程内存空间。
默认情况下,Windows 2003 Server Enterprise Edition 为核心内存预留了 2 GB 的虚拟地址空间,并且允许用户模式进程(如...
例如,具有 2 GB 物理 RAM 的 Exchange 服务器如果在 Boot.ini 文件中不使用参数 /3GB,则当 Store.exe 虚拟地址空间达到 2 GB 时,它将会用尽内存。尽管 Windows 任务管理器显示只有大约 1.5 GB 的内存处于使用状态,但服务器仍将无内存可用。您可以使用性能监视来监视虚拟地址的消耗情况。为 Store.exe 进程添加“虚拟字节”计数器,以确保精确读取虚拟空间。Store.exe 进程是您唯一必须监视的 Exchange 2000 进程。其他 Exchange 2000 进程不会增大到足以引起问题的地步。
/Userva 参数的使用
利用 /Userva 参数,您可以自定义在使用 /3GB 参数时如何分配内存。/Userva= 后面的数字是要分配给每一个进程的内存量(以 MB 为单位)。如果设置 /3gb /Userva=3030,将为进程空间保留 3,030 MB 的内存,而单独使用 /3GB 参数时为进程空间保留的内存是 3,072 MB。设置 /Userva=3030 时节省的 42 MB 空间可用来增加核心内存空间,以释放系统页表项 (PTE)。PTE 内存池的增加量为 3GB(由 /3GB 参数指定)和指派给 /Userva 参数的值之间的差额。您最好配置所有运行 Exchange Server 并配置了 /3GB 参数的基于 Windows Server 2003 的服务器,让它们也使用 /Userva=3030 这一参数。在安装了 Windows Server 2003 Enterprise Edition 或 Windows Server 2003 Datacenter Edition 之后,您必须修改 Boot.ini 文件以便将 /3GB 和 /Userva=3030 这两个参数添加到启动行。例如:
[Boot Loader] Timeout=30 Default=multi(0)disk(0)rdisk(0)partition(2)\WINNT [Operating Systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows Server 2003" /fastdetect /3GB /Userva=3030注意将 /Userva 参数减少到低于 3,030 的做法不受支持。
确保 Store.exe 进程不会用尽虚拟地址空间。当虚拟地址空间耗尽时,即使有大量可用的物理内存,内存分配也将失败。要解决此问题,您必须重新启动信息存储服务。例如,具有 2 GB 物理内存、但没有在 Boot.ini 文件中设置 /3GB 开关的服务器在 Store.exe 进程所使用的虚拟地址空间达到 2 GB 时将会出现内存不足的情况。在这种情况下,Windows 任务管理器可能会显示实际只使用了大约 1.5 GB 的内存。但是,服务器内存不足的情况确实存在,并且必须重新启动信息存储服务。
当 Store.exe 进程的虚拟内存不足时,Exchange Server 2003 服务器的性能可能会大大降低。当最大的可用虚拟内存块减至 32 MB 时,事件查看器的应用程序日志中会生成事件 ID 为 9582 的警告事件。如果您看到此事件,最好在下次有机会时重新启动 Store.exe 进程。如果最大内存块减少得更严重,只剩下 16 MB,事件查看器的应用程序日志中会生成事件 ID 9582 错误事件。如果发生此事件,则意味着服务器已接近临界操作条件,必须在下次有机会时重新启动服务器。发生此错误后,内存可能会在几个小时内耗尽。如果您没有响应这些事件,可能会遇到下列症状:
- 间歇性消息传递故障。
- 由事件 ID 12800 指示的间歇性 Internet 邮件 (IMAIL) 转换过程故障。
- 某些支持 Exchange 的防病毒程序可能会生成错误信息或事件。
最大化虚拟地址空间
要确保性能和稳定性不会降低,最好对大型邮箱服务器上用于信息存储的虚拟地址空间进行监视。执行此操作的最简单方法是,在“性能”实用工具中监视 MSExchangeIS 性能对象的虚拟内存最大块大小计数器。该值以字节为单位显示。启动计算机后,通常应查看最大虚拟内存块大小是否明显减少。但是,经过一两天的运转后,该值会接近一般的操作级别。如果最大可用虚拟内存块的值大于 200,000,000 字节(大约 200 MB),则表示服务器运行正常。如果您发现内存块小于该值,请更加密切地监视服务器。如果您遇到虚拟地址空间不足的情况:
- 如果您安装了 1 GB 或更多物理内存,当服务器满足下列条件时,请确保在 Boot.ini 文件中设置 /3GB 开关:
- 服务器是邮箱或公用文件夹的宿主。
- 操作系统是 Windows 2000 Advanced Server 或 Windows Server 2003。
- 如果 Exchange Server 2003 安装在基于 Windows Server 2003 的服务器上,并且它设置了 /3GB 开关,请确保在 Boot.ini 文件中设置 /USERVA=3030 开关。如果 Exchange Server 2003 安装在基于 Windows 2000 的服务器上,请确保该服务器运行的是 Windows 2000 Service Pack 3 (SP3) 或更高版本。
- 如果您安装了 1 GB 或更多物理内存,请在以下注册表项中配置 HeapDeCommitFreeBlockThreshold 注册表值,然后重新启动服务器: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager有关如何使用和配置此注册表值的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
数值名称:HeapDeCommitFreeBlockThreshold
数值类型:REG_DWORD
数值数据:0x00040000(推荐)
默认值:不存在315407 (http://support.microsoft.com/kb/315407/ ) “HeapDecommitFreeBlockThreshold”注册表项
通常情况下,前面的步骤可以解决虚拟地址空间使用问题。不过,在一些较大的服务器上,您可能必须对“存储数据库缓存大小”进行其他调整,以重新获得性能与可伸缩性之间的平衡。
存储数据库缓存大小
存储数据库缓存也称为 ESE 缓冲区,在数据库事务被提交到存储区之前,该缓冲区为这些事务提供较大的缓存区域。默认情况下,Exchange Server 2003 会查询本地计算机的内存配置,然后分配 896 MB 的内存(如果 Boot.ini 文件中设置了 /3GB 开关),或者分配 576 MB 的内存(如果没有设置 /3GB 开关)。如果服务器负载过重,或者如果磁盘性能不是最优的,则使用较大的 ESE 缓冲区会提高系统的总体性能。根据您的配置,您可能必须增加或减小此缓冲区的大小,以便获得最佳的总体性能。
如果 Exchange Server 2003 所在的环境中存在其他服务器端程序,则它可能会独占可用的内存资源。“动态缓冲区分配”(DBA) 算法负责在其他程序需要内存时将内存归还给操作系统。不过,您可以通过减小 ESE 缓冲区手动限制 Exchange Server 2003 使用的内存。
在具有 2 GB 以上内存的服务器上,增加 ESE 缓冲区大小可能会有所帮助。由于虚拟地址空间限制,该值不能大于 1,200 MB。
增加最大缓冲区大小之前,最好使用 Windows“性能”实用工具监视具有典型负载的服务器上的内存。为此,请监视以下性能对象和值:
性能计数器:虚拟字节
实例:STORE
在性能监视期间收集的信息可为您提供 Store.exe 进程已分配的虚拟地址空间的准确值。在 Boot.ini 文件中设置了 /3GB 开关的服务器上,“性能”实用工具中显示的值通常小于 2.8 GB。对于没有在 Boot.ini 文件中设置 /3GB 开关的服务器,该值通常小于 1.8 GB。在安装了 1 GB 或更多内存的服务器上,最好向 Boot.ini 文件中添加 /3GB 开关。如果您看到的任意配置的值大于以前所见到的那些值,则不要增加最大缓冲区大小。如果您看到的任意配置的值小于以前所见到的那些值,可能需要增加数据库最大缓冲区大小。
例如,如果您的服务器在 Boot.ini 文件中配置了 /3GB 开关,而且性能监视在服务器负载过重时显示 2.5 GB 的虚拟字节计数,则您或许可以将最大缓冲区大小增加 300 MB 左右,使总大小为 1,200 MB。
增加缓冲区大小可能会对服务器性能产生不利影响。缓冲区越大,意味着使用的虚拟地址空间越多。因此,如果您的服务器遇到虚拟内存地址空间限制,增加缓冲区大小可能会导致操作系统不稳定。在非常大的邮箱服务器上,可能必须减小默认的缓冲区大小才可防止系统不稳定。
如何修改 ESE 缓冲区大小
msExchESEParamCacheSizeMax 参数控制 ESE 缓冲区大小。它的值以页计数的形式表示,并且必须设置为 8192 的精确倍数才可实现最大效率:
- 设置了 /3GB 开关的服务器上的默认大小:229376 (896 MB)
- 没有设置 /3GB 开关的服务器上的默认大小:147456 (576 MB)
- 在设置了 /3GB 开关的情况下,建议的最大值是:311296 (1.2 GB)
注意:如需将该值增大到默认值以上,应当先监视上文所述的存储进程的虚拟字节。 - 在未设置 /3GB 开关的情况下,建议的最大值是:196608 (768 MB)
注意:如需将该值增大到默认值以上,应当先监视上文所述的存储进程的虚拟字节。
注意:如果 ESE 缓冲区大小设置得较大,事务日志的重放速度会大大加快。如果需要进行灾难恢复,可能需要将 ESE 缓冲区大小暂时增大到 311296。
如果已经将 Exchange 5.5 Server 计算机就地升级到了 Exchange 2000 Server,您可能会注意到为 msExchESEParamCacheSizeMax 参数分配了一个异常高的值。在有些服务器上,该值等于 2,048 MB。在这种情况下,请删除该参数或将其重置为更适当的值。要修改存储数据库缓存大小,请执行下列操作:
- 启动“Active Directory 服务界面 (ADSI) 编辑”实用工具。“ADSI 编辑”包含在 Windows 支持工具(位于 Windows 2000 或 Windows Server 2003 光盘的 Support\Tools 文件夹)中。
- 在“配置容器 [servername.example.com]”(其中 servername.example.com 是服务器的完全限定域名 FQDN)下,展开“CN=Configuration, DC=example, DC=com”。
- 依次展开“CN=Services”、“CN=Microsoft Exchange”、“CN=OrganizationName”(其中,OrganizationName 是您的组织的名称)、“CN=Administrative Groups”、“CN=First Administrative Group”(其中,First Administrative Group 是您的管理组的名称)、“CN=Servers”和“CN=servername”。
- 在“CN=servername”下,右键单击“CN=InformationStore”,然后单击“属性”。
- 在“请选择要查看的属性”列表中,单击“两者”。
- 在“请选择要查看的属性”列表中,单击“msExchESEParamCacheSizeMax”。
注意:msExchESEParamCacheSizeMax 属性超出了“请选择要查看的属性”列表的宽度。切勿在无意中单击“msExchESEParamCacheSizeMin”属性。 - 在“编辑属性”框中,键入要分配给此属性的值。
注意:请确保您输入的值是 8,192 的倍数。 - 单击“设置”,然后单击“确定”。
- 退出“ADSI 编辑”实用工具。然后,等待足够长的时间,让该值完成在整个 Active Directory 林中的复制。
- 在 Exchange 服务器上重新启动 Microsoft Exchange 信息存储服务。
位置:右建我的电脑---属性---高级--启动和故障恢复的“设置”---默认操作系统("Microsoft Windows XP Professional" /noexecute=optin /fastdetect)
/noexecute参数 这一参数的取值可以是AlwaysOn、AlwaysOff、OptIn 、OptOut中的任一个。当你启用DEP(系统数据执行保护)的时候,/noexecute=optin;关闭DEP,/noexecute=optout/noexecute=AlwaysOn时,便将整个系统置于 DEP 保护范围以内。在这种状态下,很多程序都不能运行,甚至包括微软Office下的组件和IE等,而且报错的提示还不一样。将这一功能用于某些特殊的场合倒是不错的选择,比如与网络连接无关的局域网服务器等。/noexecute=AlwaysOff时,相当于关闭了DEP和EVP功能,凡是被其阻止的程序都能正常运行。我们可在这种状态下暂时运行某一程序,但一定要注意网络安全,工作完成后马上恢复。数据执行保护 (DEP) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。

回到顶端
0 条评论 “未针对 Exchange 优化此服务器的内存设置”