问题定位用到三个小工具:RAMMap、Poolmon、Strings.exe
背景:接到项目反馈,应用服务器内存占用达到80%以上,w3wp占400M,剩余的11G内存跑哪里去了呢,任务管理器看不到,但是可以看到Nonpaged Pool(未分页池)占用内存很多。非产品问题本应该由客户管理员去解决,但问题原因与之前微软case案例相似,邮件中又提到具体的诊断工具与步骤,为何不先看一番究竟,正好熟练熟练工具的使用跟排查思路(之前在自己机器上验证过)
- 管理员打开RAMMap,确认Nonpaged Pool占用内存非常的高,达到11G多,而这部分内存一般是给系统中的driver使用的。
- 找到部署Poolmon.exe的文件夹,shift+右键,在此处打开命令窗口,输入Poolmon.exe –p –d
会弹出Poolmon的诊断界面,此时应该按占用内存从大到小排好序了。这就是poolmon收集到的各种driver内存的使用情况。发现LSbf drivers占用内存非常的高,大约11G。
- 定位到drivers之后,怎么判断这是谁的驱动呢?可以使用string(sysinternal 工具)查找%SystemRoot%System32drivers文件中定位。
具体方法:将strings.exe放入C:WindowsSystem32drivers文件夹里,shift+右键,在此处打开命令窗口,输入strings * | findstr LSbf,即可定位到是谁的drivers了!
- 案例里边是系统的srvnet.sys,搜索一下,应用服务器疑似中毒,项目上杀毒之后,问题解决。
参考链接:https://www.red-gate.com/simple-talk/sysadmin/general/troubleshooting-nonpaged-and-paged-pool-errors-in-windows/
附工具下载地址:
strings.exe https://docs.microsoft.com/zh-cn/sysinternals/downloads/strings
RAMMap https://docs.microsoft.com/zh-cn/sysinternals/downloads/rammap
Poolmon https://download.csdn.net/download/weixin_40188600/10688357