基于这线程,看来MSMQ进程在内存压力下占用大量可用内存是“正常的”。
似乎大多数监控工具的内存使用都是基于工作集内存。这包括我们当前使用的一个(New ),它使用了这个powershell查询:
Get-WmiObject -Query "SELECT CommitLimit,CommittedBytes,AvailableBytes FROM
Win32_PerfRawData_PerfOS_Memory"任务管理器似乎也使用工作集内存作为其默认内存图。
我们通常看到内存使用(基于工作集)尖峰到90%以上,根据上面的线程链接,这是不正常的。
在使用MSMQ的机器上看到高内存使用率是相当标准的吗?是否标准做法是不监视这些机器的内存使用情况?
发布于 2014-09-03 21:31:56
所有Windows Vista+版本中的内存使用都是为了尽可能多地保存内存。这是最有效的方法,因为它可以防止从磁盘读取,并且从RAM中刷新不需要的页面比从磁盘填充这些页面花费的时间要少得多。您所看到的同样的问题也适用于MSSQL服务器、Exchange,以及任何使用大量RAM的东西,因为它们在任何时候都会尽可能多地加载到RAM中。
如果您没有看到分页操作(磁盘敲击)、其他应用程序中的内存错误或其他应用程序的性能问题的实际问题,您可以安全地忽略高内存使用。空RAM是不需要的RAM。相反,如果您期望在机器上使用较高的内存,而您看到的内存使用量为零,则可能会出现问题。
至于对内存使用情况的监视,如果您只监视所使用的总RAM,我将停止在高级别上得到警告。保持对低RAM利用率的警告,就像在服务器上保持CPU利用率低一样,服务器上的应用程序在空闲时CPU保持在20% (或任何其他)。如果您正在监视什么应用程序正在使用多少内存,并且服务器承载了多个应用程序,那么您可能希望在不运行MSMQ的情况下测试您的其他应用程序,这样您就可以准确地表示如果有机会,它们将使用多少RAM,并调整分配和监视以满足这些需求。
在我们的组织中,我们已经停止监视所有服务器上的高RAM消耗,我们期望这些服务器具有较高的RAM利用率;它只会触发需要被静音的警报,并混淆合法的警报。
这文章提供了一些关于在Vista中内存管理是如何改变的高级信息,从那时起,内存管理器AFAIK就没有发生过重大的变化。
发布于 2014-09-04 12:51:00
MSMQ内存的使用与消息卷直接相关。如果内存使用率很高,那么MSMQ当时正在管理许多消息。你最好决定什么是日复一日使用的预期信息量,并在数字超过这个水平时发出警告。
此外,如果大量的消息被认为是正常的,那么博客上的第4项也是很重要的。
https://serverfault.com/questions/626081
复制相似问题