2015年天互进行了内部员工干货分享计划,让销售、技术、客服、市场、行政五大体系的员工把自己工作中的干货内容分享给大家,共同提高业务能力和工作效率。本篇内容来自虚拟产品部姚运的技术日志分享,"windows2003中未分页内存泄漏导致服务器不稳定"的问题处理流程,展现了姚工的工作严谨性和负责人的态度。
windows2003中未分页内存泄漏导致服务器不稳定
未分页内存是Windows分配给系统内核或驱动所需的内存空间,非分页内存不是虚拟内存,是不能置换到硬盘的,只能保存在物理内存中,常用于一些软件或是系统的驱动程序使用,如果未分页内存无限增大,到达一个阀值,就会造成系统问题。
在windows200332位中分页和未分页内存的总和不能超过256M。有极个别的客户在服务器中会发现,服务器中某一项服务无法正常使用,例如iis服务器中网站打不开,环境配置没有任何问题,这时如果发现任务管理器中核心内存标签中,总数达到接近256M,而未分页内存数达到160M左右,这时就是由于未分页内存泄漏导致系统不稳定,无法分配未分页内存导致的故障。
在这种状况下,应该查找究竟是什么程序持续占用了系统未分页内存,这里可以使用Windows的poolmon工具来进行监视。
Poolmon是类似于Dos的命令行执行程序,基本上完成检测的操作我们只需要2个指令:P-排序标签列表通过分页,非分页,混合等3种模式;B-对标签排序最大字节使用情况。
在这图中我们看到目前占用90M非分页内存的Thre项。
接下来我们在dos命令中输入
findstr/s/m/l"Thre"c:\windows\system32\drivers\*.sys
如上图所示,我们就可以看到是系统驱动和杀毒驱动占用了Thre。
方法总比困难多,每个人都有自己擅长的解决问题的方法,只要集思广益,方法会层出不穷。