none
Exchange 2003,修改操作系统部分参数后出现内存不足错误 RRS feed

  • 问题

  • 环境:

    原有一台ex 2003 sp2(同时安装了symantec的邮件网关过滤软件),由于系统经常崩溃自动重启动,所以想将数据库转移到另一台服务器上去,做成前后端架构看看能否解决问题。新服务器采用一台HP ML 370 G5,4个intel 1.86GHz CPU,3GB内存,8个硬盘,其中2块做R1,放操作系统,6块做R5,放ex2003数据库;

    新装Windows 2003 sp2 和Exchange Server 2003 sp2;剩余磁盘空间 C:43GB,E:526GB

    昨晚参考微软官方文档《Microsoft Exchange Server 2003 性能和可伸缩性指南》调整了部分性能参数,如/3GB、/USERVA=3030、HeapDeCommitFreeBlockThreshold注册表值、。。。。等等;

    系统虚拟内存设为“系统管理的大小”(推荐值是4.6GB,已分配7GB多),然后重启动了系统。

    之后在将用户邮箱转移到新服务器时,出现内存不足的错误。重启动系统后还是这样。

    目前该服务器物理内存运行时剩余1.5GB左右,虚拟内存使用达7GB多(系统虚拟内存设为“系统管理的大小”)。但还会报“虚拟内存最小值太低”(信息如下),导致一些系统管理工具无法打开(如:计算机管理、系统、exchange管理工具、任务管理器等等),只能重启动系统:

    事件类型: 信息
    事件来源: Application Popup
    事件种类: 无
    事件 ID: 26
    日期:  2012-4-8
    事件:  15:08:35
    用户:  N/A
    计算机: MAILSERVER2
    描述:
    弹出应用程序: Windows - 虚拟内存最小值太低: 您的系统虚拟内存太低。Windows 会增加虚拟内存分页文件的大小。 在这个过程中,一些应用程序的内存请求会被拒绝。有关详细信息,请参阅“帮助”。

           目前用户邮箱已经迁移完成,前、后端服务器也已启用。看上去似乎还可以用,但我怕运行不了多久又出现问题。将修改过的参数全部还原也许能解决问题,不过修改的参数有好多个,按微软建议也应该该,所以我想找到到底是哪个参数修改引起这个问题,有哪位高人能帮忙解决下这个问题呀。(由于是生产环境下,不方便一个一个参数去试)。

    2012年4月8日 11:17

答案

  • 您好:

    先可以考虑停止相关symantec 是否会有相关问题,其次考虑添加虚拟机进行冗余考虑,因为调整参数比较多,又是生产环境能够调整内容比较少,所以需要考虑加入虚拟机进行最小化环境的影响。

    最后参考调整最快方法是全部回复原位,实在不行只能一个一个考虑:http://support.microsoft.com/kb/325044/zh-cn,请参考这个KB 来完成。

    2012年4月8日 12:54
  • 您好!

    1.对于错误 111,请确认Exchsrvr\Schema 目录是可得的, 确认 non_ipm_subtree\schema 文件已经被创建。

    2.重启IS服务试试。

    另外,这里有个类似的thread, 看看能否解决这个错误。

    http://social.technet.microsoft.com/Forums/en-US/exchangesvrgeneral/thread/f5a2b278-7ade-4ed2-b9f7-5983fbcbbc7e

    3.对于 4356警告,请参考以下这篇文章看看解决此问题

    http://technet.microsoft.com/en-us/library/cc774410(v=WS.10).aspx

    谢谢!

    2012年4月9日 9:34
  • 您好!

    1.111错误是因为从Exchsrvr\Schema目录复制schema文件到non_ipm_subtree\schema文件夹时失败引起的。因此,您需要检查Exchsrvr\Schema 目录是可访问的,  non_ipm_subtree\schema 文件被创建。

    Understanding EXOLEDB Default Folders

    2.该文件是系统文件,请重新创建,再看看该错误是否消除。

    3.警告4356,这个来源于系统,您可以到windows server论坛问问。

    http://social.technet.microsoft.com/Forums/en/windowsserversystemzhchs/threads

    谢谢!

    2012年4月11日 4:27
  • 我安装使用Exchange Server 最佳实践分析工具ExBPA扫描了一下,发现了几个与内存相关的错误:

    1. 一个是虚拟内存设置尺寸过大,“页面文件大小超过总物理内存”

    Microsoft Exchange 分析工具查询 Win32_PageFile 的值。此关键字代表当前配置的最大页面文件大小。

    Exchange 分析工具还查询TotalPhysicalMemory 关键字的值。该值代表计算机上安装的 RAM 数目。

    如果 Exchange 分析工具确定 Win32_PageFileMaximumSize 关键字的值比 Win32_ComputerSystem TotalPhysicalMemory 关键字的值大 1.05 倍,就会显示错误。

    页面文件 (pagefile.sys) 是 Windows 所使用的硬盘上的一个隐藏文件,在系统 RAM 不足时保留临时数据。页面文件也称为分页文件或交换文件。虚拟内存由页面文件和 RAM 组成。

    建议的页面文件大小相当于 RAM 量的 1.05 倍,最大为 4,095 MB。这意味着每个卷可以设置的最大分页文件大小为 4,095 MB。

    Bb738135.note(zh-cn,EXCHG.80).gif注意:为了避免出现页面文件碎片,建议将分页文件大小的初始值和最大值设置为同一个值。如果减小初始页面文件或最大页面文件设置的大小,则必须重新启动计算机才能看到更改的效果。增大时通常不需要重新启动。

                2.另一个错误是“此服务器有 1 GB 或更多物理内存,并且 HeapDeCommitFreeBlockThreshold 未设置为 262144”;

    Microsoft® Exchange Server 分析工具读取以下注册表项,以确定是否已基于系统中物理内存量优化微调了 Exchange:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\HeapDeCommitFreeBlockThreshold

    如果 Exchange Server 分析工具发现在安装了 1 GB 或更多物理内存的 Exchange Server 计算机上未设置 HeapDeCommitFreeBlockThreshold 的值,则显示警告。

    当在给定的地址释放内存后,操作系统堆管理器检查该地址周围有多少个相邻的字节空闲。该检查完成后,堆管理器可以执行下面两个操作中的某一个:

    • 保持相邻的内存块提交。
    • 回收相邻的内存块,而仅仅将它标记为保留。

    只有在相邻字节超过了一定的数目时才回收内存,HeapDeCommitFreeBlockThreshold注册表项即指定该数目。默认情况下,堆管理器不一定合并所有空闲块或分配新内存。因此,块可能回收并成为虚拟地址空间中的无用空洞。这可能导致产生虚拟内存碎片、性能下降,并最终导致系统不稳定。

    在安装了 1 GB 或更多物理内存的系统上,可以通过控制回收的内存块的大小来优化性能。HeapDeCommitFreeBlockThreshold注册表项控制对释放的内存的处理。将该值添加到注册表中时,必须对它配置十六进制值 0x00040000(相当于十进制的 262144)。

    对于 HeapDeCommitFreeBlockThreshold 注册表项,Microsoft 除了支持十六进制值 0x00040000(相当于十进制的 262144)以外,不支持其他任何值。

           之前我改过HeapDeCommitFreeBlockThreshold 注册表项,但不小心改错了,把下面的HeapDeCommitTotalFreeThreshold值给修改了。(该打pp!)

           修改了这两个参数后,现在系统没有再出现虚拟内存不足的错误了。

    2012年4月12日 9:30

全部回复

  • 补充:

    系统应用程序日志里还有几个似乎相关的错误:

    事件类型: 错误
    事件来源: MSExchangeSA
    事件种类: 监视
    事件 ID: 9099
    日期:  2012-4-8
    事件:  18:12:39
    用户:  N/A
    计算机: MAILSERVER2
    描述:
    MAD 监视线程无法读取服务的状态,错误“0x8004101d”。

    事件类型: 错误
    事件来源: MSExchangeSA
    事件种类: 常规
    事件 ID: 1031
    日期:  2012-4-8
    事件:  18:09:45
    用户:  N/A
    计算机: MAILSERVER2
    描述:
    某个系统助理任务被阻止。
    函数: CMonitoringTask::Work

    事件类型: 错误
    事件来源: MSExchangeIS
    事件种类: 常规
    事件 ID: 1160
    日期:  2012-4-8
    事件:  18:04:48
    用户:  N/A
    计算机: MAILSERVER2
    描述:
    访问数据库“第一个存储组\邮箱存储(MAILSERVER2)”时,函数 JTAB_BASE::EcCreateIndex 出现数据库资源错误 0xfffffc0d。

    事件类型: 警告
    事件来源: Win32k
    事件种类: 无
    事件 ID: 243
    日期:  2012-4-8
    事件:  9:11:42
    用户:  N/A
    计算机: MAILSERVER2
    描述:
    桌面堆栈分配失败。

    2012年4月8日 11:22
  • 您好:

    先可以考虑停止相关symantec 是否会有相关问题,其次考虑添加虚拟机进行冗余考虑,因为调整参数比较多,又是生产环境能够调整内容比较少,所以需要考虑加入虚拟机进行最小化环境的影响。

    最后参考调整最快方法是全部回复原位,实在不行只能一个一个考虑:http://support.microsoft.com/kb/325044/zh-cn,请参考这个KB 来完成。

    2012年4月8日 12:54
  • exchange IS 存储服务出现问题,先重启一下,然后整理下内存碎片

    http://support.microsoft.com/kb/838233/zh-cn

    和symantec没有关系


    失业了,求微软平台顾问工作 MCITP/CCIE/VCP QQ:6927317 Pcdogyu@hotmail.com

    2012年4月8日 16:26
  • exchange IS 存储服务出现问题,先重启一下,然后整理下内存碎片

    http://support.microsoft.com/kb/838233/zh-cn

    和symantec没有关系

    重启动系统了,启动后系统日志里没有出现错误信息,但应用程序日志里有如下错误:

    事件类型: 错误
    事件来源: EXOLEDB
    事件种类: 常规
    事件 ID: 111
    日期:  2012-4-9
    事件:  12:59:51
    用户:  N/A
    计算机: MAILSERVER2
    描述:
    Microsoft Exchange OLEDB 无法在 MDB 启动时进行架构传播 HRESULT = 0x80040e19。

    事件类型: 警告
    事件来源: EventSystem
    事件种类: (52)
    事件 ID: 4356
    日期:  2012-4-9
    事件:  12:59:56
    用户:  N/A
    计算机: MAILSERVER2
    描述:
    COM+ Event System 无法创建订阅者 {58FC39EB-9DBD-4EA7-B7B4-9404CC6ACFAB} 的实例。StandardCreateInstance 返回 HRESULT 8000401A。

    2012年4月9日 5:18
  • 您好!

    1.对于错误 111,请确认Exchsrvr\Schema 目录是可得的, 确认 non_ipm_subtree\schema 文件已经被创建。

    2.重启IS服务试试。

    另外,这里有个类似的thread, 看看能否解决这个错误。

    http://social.technet.microsoft.com/Forums/en-US/exchangesvrgeneral/thread/f5a2b278-7ade-4ed2-b9f7-5983fbcbbc7e

    3.对于 4356警告,请参考以下这篇文章看看解决此问题

    http://technet.microsoft.com/en-us/library/cc774410(v=WS.10).aspx

    谢谢!

    2012年4月9日 9:34
  • 您好!

    1.对于错误 111,请确认Exchsrvr\Schema 目录是可得的, 确认 non_ipm_subtree\schema 文件已经被创建。

    2.重启IS服务试试。

    另外,这里有个类似的thread, 看看能否解决这个错误。

    http://social.technet.microsoft.com/Forums/en-US/exchangesvrgeneral/thread/f5a2b278-7ade-4ed2-b9f7-5983fbcbbc7e

    3.对于 4356警告,请参考以下这篇文章看看解决此问题

    http://technet.microsoft.com/en-us/library/cc774410(v=WS.10).aspx

    谢谢!

    您好:

    1.对于错误 111,您所说的“请确认Exchsrvr\Schema 目录是可得的, 确认 non_ipm_subtree\schema 文件已经被创建”我不明白。

    服务器重启动后还是有同样错误。

    这个帖子我看了,也参照添加了我的后端服务器,但有个问题是,“复制”标签里显示了前端服务器的公用文件夹,需要删除吗?这个公用文件夹存储在配置前端服务器时我已卸载了它,还需要重新启用吗?

    2.第二个帖子里的“comexp.msc”在我的服务器上找不到。

    2012年4月9日 10:41
  • 您好!

    1.111错误是因为从Exchsrvr\Schema目录复制schema文件到non_ipm_subtree\schema文件夹时失败引起的。因此,您需要检查Exchsrvr\Schema 目录是可访问的,  non_ipm_subtree\schema 文件被创建。

    Understanding EXOLEDB Default Folders

    2.该文件是系统文件,请重新创建,再看看该错误是否消除。

    3.警告4356,这个来源于系统,您可以到windows server论坛问问。

    http://social.technet.microsoft.com/Forums/en/windowsserversystemzhchs/threads

    谢谢!

    2012年4月11日 4:27
  • 您好!

    1.111错误是因为从Exchsrvr\Schema目录复制schema文件到non_ipm_subtree\schema文件夹时失败引起的。因此,您需要检查Exchsrvr\Schema 目录是可访问的,  non_ipm_subtree\schema 文件被创建。

    Understanding EXOLEDB Default Folders

    2.该文件是系统文件,请重新创建,再看看该错误是否消除。

    3.警告4356,这个来源于系统,您可以到windows server论坛问问。

    http://social.technet.microsoft.com/Forums/en/windowsserversystemzhchs/threads

    谢谢!


    111错误的问题没再出现了,谢谢。
    2012年4月12日 9:06
  • 我安装使用Exchange Server 最佳实践分析工具ExBPA扫描了一下,发现了几个与内存相关的错误:

    1. 一个是虚拟内存设置尺寸过大,“页面文件大小超过总物理内存”

    Microsoft Exchange 分析工具查询 Win32_PageFile 的值。此关键字代表当前配置的最大页面文件大小。

    Exchange 分析工具还查询TotalPhysicalMemory 关键字的值。该值代表计算机上安装的 RAM 数目。

    如果 Exchange 分析工具确定 Win32_PageFileMaximumSize 关键字的值比 Win32_ComputerSystem TotalPhysicalMemory 关键字的值大 1.05 倍,就会显示错误。

    页面文件 (pagefile.sys) 是 Windows 所使用的硬盘上的一个隐藏文件,在系统 RAM 不足时保留临时数据。页面文件也称为分页文件或交换文件。虚拟内存由页面文件和 RAM 组成。

    建议的页面文件大小相当于 RAM 量的 1.05 倍,最大为 4,095 MB。这意味着每个卷可以设置的最大分页文件大小为 4,095 MB。

    Bb738135.note(zh-cn,EXCHG.80).gif注意:为了避免出现页面文件碎片,建议将分页文件大小的初始值和最大值设置为同一个值。如果减小初始页面文件或最大页面文件设置的大小,则必须重新启动计算机才能看到更改的效果。增大时通常不需要重新启动。

                2.另一个错误是“此服务器有 1 GB 或更多物理内存,并且 HeapDeCommitFreeBlockThreshold 未设置为 262144”;

    Microsoft® Exchange Server 分析工具读取以下注册表项,以确定是否已基于系统中物理内存量优化微调了 Exchange:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\HeapDeCommitFreeBlockThreshold

    如果 Exchange Server 分析工具发现在安装了 1 GB 或更多物理内存的 Exchange Server 计算机上未设置 HeapDeCommitFreeBlockThreshold 的值,则显示警告。

    当在给定的地址释放内存后,操作系统堆管理器检查该地址周围有多少个相邻的字节空闲。该检查完成后,堆管理器可以执行下面两个操作中的某一个:

    • 保持相邻的内存块提交。
    • 回收相邻的内存块,而仅仅将它标记为保留。

    只有在相邻字节超过了一定的数目时才回收内存,HeapDeCommitFreeBlockThreshold注册表项即指定该数目。默认情况下,堆管理器不一定合并所有空闲块或分配新内存。因此,块可能回收并成为虚拟地址空间中的无用空洞。这可能导致产生虚拟内存碎片、性能下降,并最终导致系统不稳定。

    在安装了 1 GB 或更多物理内存的系统上,可以通过控制回收的内存块的大小来优化性能。HeapDeCommitFreeBlockThreshold注册表项控制对释放的内存的处理。将该值添加到注册表中时,必须对它配置十六进制值 0x00040000(相当于十进制的 262144)。

    对于 HeapDeCommitFreeBlockThreshold 注册表项,Microsoft 除了支持十六进制值 0x00040000(相当于十进制的 262144)以外,不支持其他任何值。

           之前我改过HeapDeCommitFreeBlockThreshold 注册表项,但不小心改错了,把下面的HeapDeCommitTotalFreeThreshold值给修改了。(该打pp!)

           修改了这两个参数后,现在系统没有再出现虚拟内存不足的错误了。

    2012年4月12日 9:30
  • 您好:

    先可以考虑停止相关symantec 是否会有相关问题,其次考虑添加虚拟机进行冗余考虑,因为调整参数比较多,又是生产环境能够调整内容比较少,所以需要考虑加入虚拟机进行最小化环境的影响。

    最后参考调整最快方法是全部回复原位,实在不行只能一个一个考虑:http://support.microsoft.com/kb/325044/zh-cn,请参考这个KB 来完成。

    这个kb 325044对于解决这个问题是有用的,不过就是内容太多,感觉太复杂了。

    一个体会就是,ExBPA工具真是太强大了,问题和解决方案都一目了然。强烈推荐使用!!!

    (缺点就是安装ExBPA之前要先安装.net v1.1,我装了.net 2.0它都不认)

    2012年4月12日 9:40