非页面内存使用量会随着EVEN进程(事件logging器/查看器)的增加而增加,直到耗尽

我有一个非分页内存问题的服务器。 使用缓慢攀升,直到耗尽,服务器停止提供网页,因为IIS不能获得足够的非分页内存。

这是一个32位Windows 2003服务器。

任务pipe理器显示没有可疑活动,所有正在运行的进程正在消耗“正常”的NP内存量,并且随着时间的推移,它们都保持稳定。

显示所有用途的标签是根据标签列表用于事件查看器的“偶”。 事件日志中没有显示其他警告或错误,除非NP内存耗尽且IIS开始投诉。

服务器运行MSSQL,IIS和hMailserver,没有别的。

任何人有任何想法或见过这.. 如果这是一个与网卡等驱动程序相关的标签,但事件查看器,我会去哪里去!

Poolmon输出偶数

Tag Type Allocs Frees Diff Bytes Per Alloc Even NonP 65563201 ( 948) 64585254 ( 861) 980124 47049280 ( -2384) 48 

谢谢

我要检查的第一件事是确保在SQL Server中设置max server memory (MB) 。 这是一个服务器选项,告诉SQL Server“这是你可以拥有的所有内存”。 默认情况下,SQL Server将使用所有可用的内存来存储数据caching,这些数据caching可能是共享环境中的坏消息,比如你拥有的内存。

在你的SQL实例中,打开一个新的查询窗口并input:

 sp_configure 'show advanced options',1 GO RECONFIGURE GO sp_configure 'max server memory (MB)' 

如果config_value的值是0,那么这意味着SQL Server被允许获取所有它想​​要的内存。 在这种情况下,你应该把它设置为更适合你的环境的东西。

你没有提到你的服务器有多less内存,但是因为你处在一个32位的环境中(而且你也没有指定哪一个版本的Windows),所以我将继续并假设4GB。 您可能希望将SQL限制为1GB以允许其他应用程序服务。 你可以这样做:

 sp_configure 'max server memory (MB)',1000 GO RECONFIGURE GO 

如果您使用的是Windows 2003 Enterprise,并且拥有大于4GB的内存,那么您当然可以将最大内存设置为更大。

您可能还想使用地址窗口化扩展(AWE)进行调查,这可以为您提供更多的呼吸空间。 您可以在TechNet上阅读关于它的信息

发生问题时,打开“任务pipe理器”并添加“ Handles列。 在该列上sorting并查找任何看起来过多的值。 在启动时和随着时间的推移获取服务器的基线可能会有所帮助。 开机后多久才能看到问题? 有一个很好的机会,最高/不寻常数量的处理将是你的罪魁祸首,虽然确定为什么可能是一个完整的其他野兽。

在我的情况下,我看到它由CommVault(备份)代理失败卸载造成的,留下一个非function性的服务,每隔几秒创build一个HKCU(registry)的两个句柄。 每个打开的句柄都会消耗一些内存,最终使整个组织的Exchange环境瘫痪。

Sysinternals handle.exe也可用于查看哪些进程正在使用多个句柄以及哪些对象被连接到哪些进程。