问题定位用到三个小工具: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%\System32\drive