本文部分内容参考自KB.
一、概述:
什么是虚拟内存?我们使用的计算机都是基于X86的32位操作系统,而计算机是以二进制来描述的。因此2^32=4096MB=4GB。也就是说,一个32位计算机上运行的进程,最大寻址空间为4GB,这就是我们说的虚拟地址空间。它和实际的物理内存空间并无关联。
当某一进程将属于它的虚拟内存用完后,即使你有再多的物理内存空闲,也将出现无内存可分配的情况。遗憾的是,我们不能通过增加物理内存的方法来增加虚拟内存。
什么是虚拟内存碎片?由于内存的分配和管理是由操作系统的内存管理器来完成的。其是一个动态变化的过程。内存的分配和使用以及释放都是动态的。因此,在计算机运行一段时间后,就会因为频繁的内存分配和释放,产生一段一段不连续的小块内存块,称为虚拟内存碎片。
内存碎片的危害。服务器产生大量的内存碎片后,就会导致EXCHANGE的STORE进程(此进程为最耗用内存的进程且该进程是依据虚拟内存来设计的)在使用中不能获得可用的虚拟内存空间块,时间长了,就会发生虚拟内存不足以分配的现象,严重的虚拟内存不足,将影响系统对邮件的处理工作。
二、虚拟内存和9582日志
我们经常在一个负载很高的服务器上发现事件里记录着一些9582的警告或错误日志,并且发现STORE长时间的占用大量的内存空间,这种现象几乎无法改变,只有重新启动计算机才能得以暂时的缓解。
出现9582日志表明STORE进程已经遇到了一个虚拟内存不足问题。随着虚拟内存不足的情况的加剧,9582日志将由警告转变为错误。一般来说,当最大的可用虚拟内存的空闲块大小少于32MB时,将记录9582的警告错误,
Source:MSExchangeIS
Category:Performance
ID:9582
Type:Warning
Description:
The virtual memory necessary to run your Exchange server is fragmented in such
a way that performance may be affected.It is highly recommended that you restart
all Exchange services to correct this issue.
For more information, click <http://www.microsoft.com/contentredirect.asp>
当小于16MB时,将记录9582的错误日志。
Source:MSExchangeIS
Category:Performance
ID:9582
Type:Error
Description:
The virtual memory necessary to run your Exchange server is fragmented in such
a way that performance may be affected.It is highly recommended that you restart
all Exchange services to correct this issue.
For more information, click <http://www.microsoft.com/contentredirect.asp>
出现该警告错误后,你应根据情况,安排在未来的36-72小时内执行预定的停机维护计划,出现错误日志后,你应尽快的在工作空闲时间重新启动你的服务器,以缓解虚拟内存不足问题。因为出现9582错误日志后,STORE进程既不能创建额外的堆,也将无法正确的安装和卸载存储组,当虚拟内存的最大空闲继续减少到小于10MB时,STORE将无法安装存储组。所以出现9582的错误日志,应尽可能的立即执行关机维护工作,以避免在高峰时间带来的性能问题。
三、虚拟内存和12800日志
当虚拟内存的不足现象继续加剧时,系统将出现在邮件处理过程中出现虚拟内存不足而导致的错误,这时系统将记录12800错误日志
Source: MSExchangeIS
Category:Content Engine
ID: 12800
Type: Error
Description:
Message processing failed because there is not enough available memory (8007000E-82000387).
在没有足够的可用虚拟内存处理邮件,或者由于邮件格式问题的情况下,您可能会在应用程序事件日志中看到此事件。此事件单独出现并不表示存在虚拟内存碎片问题。但是,在短时间内多次出现此事件则说明服务器上的虚拟内存碎片问题已经相当严重了。
四、内存最优配置检测
在EX2003里,在STORE进程启动时,系统会自动进行内存最优配置检测工作,如果你的内存不是最优配置的,9665事件将记录在你的日志中。以下情况之一将记录9665警告日志:
1、Exchange 安装在基于 Microsoft Windows 2000 的计算机上,并且 SystemPages 注册表值没有设置在 24000 和 31000 之间。
2、服务器安装了 1 GB 或更大的物理 RAM,但没有在 Boot.ini 文件中设置 /3GB 选项。
3、Exchange 安装在基于 Windows Server 2003 的计算机上,此计算机安装了 1 GB 或更大的物理 RAM,并且在 Boot.ini 文件中设置了 /3GB 选项,但 Boot.ini 文件中没有 /userva 选项或此选项没有设置在 3030 和 2970 之间。
当记录事件 ID 9665 警告信息时,请按照以下步骤操作:
1、检查注册表中的 SystemPages 设置和 HeapDeCommitFreeBlockThreshold 设置。
2、检查 Boot.ini 文件中的 /3GB 选项和 /userva 选项。
如果要关闭内存配置检查,请将 Suppress Memory Configuration Notification DWORD 值添加到以下注册表项中,然后将该值设置为 1:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem
五、性能日志和警告
以下计数器是最重要的计数器,用于监视 Exchange 2003 和 Exchange 2000 中的 Store.exe 进程中的虚拟内存碎片:
性能对象:MSExchangeIS
计数器:VM 最大块大小
此计数器显示最大空闲虚拟内存块的大小(以字节为单位)。此