如何在生产服务器上查看 Windows Server 2012 Datacenter 非分页池最大值?
由于该服务器是生产服务器,因此我不想在其上安装任何东西。
我有 7 GB 的物理内存,非分页池使用量似乎约为 50 MB
编辑:我有一台生产服务器,半夜时虚拟内存耗尽,没有用户在线:Windows 成功诊断出虚拟内存不足的情况。以下程序消耗的虚拟内存最多:sqlservr.exe (1392) 消耗 2162122752 字节,w3wp.exe (8376) 消耗 831188992 字节,svchost.exe (912) 消耗 164548608 字节。
我首先想到的是内存泄漏,并想知道系统中 50MB 的非分页池内存是否很多。非分页池最大值是在启动时计算的,无法通过任务管理器或性能监视器查看。我知道的唯一可以查看非分页池最大值的方法是安装其他组件,例如 Windbg。因此,问题来了。
我试图解决的实际问题是“为什么我的生产服务器在周末半夜几乎没有负载的情况下耗尽了虚拟内存。我认为非分页内存利用率高可能是内存泄漏的良好迹象。
答案1
如何在生产服务器上查看 Windows Server 2012 Datacenter 非分页池最大值?
您需要服务器上的调试工具,或者您需要从服务器上获取内存转储以在另一个系统上进行分析。(在调试器中使用 !vm 命令。)
64 位版本的 Windows(例如 Server 2012)没有 32 位版本所具有的严苛的非分页池限制。64 位 Windows 上非分页池的理论限制将大约等于机器上安装的物理 RAM 的大小(或略小。因此,有几 GB。)最简单的方法是使用 Process Explorer 并查看系统信息中的“内存”选项卡。它使用内核符号来找出池限制。我知道您说您不能安装任何东西,但是您有如果您想查看池限制,请安装一些基本的调试工具。
非分页池使用量似乎约为 50 MB
听起来很正常。可能甚至有点低。完全取决于硬件配置、安装了哪些驱动程序等。
我试图解决的实际问题是“为什么我的生产服务器在周末半夜几乎没有负载的情况下耗尽了虚拟内存。
好吧,我给你一个提示,告诉你是 SQL。当你的电脑上安装了 SQL Server,并且你有一个问题“我的内存在哪里?”在该系统上,答案总是 SQL Server。记得在 SQL Server 上设置内存限制,否则它会很乐意占用所有内存。
但是,如果你想要更好的取证分析,那么有很多工具可供选择。Windows Performance Toolkit(以前称为 Xperf)就是你的好帮手。