win内存使用率过高但是资源监视器查看不到进程,排查思路

小丫1年前技术文章6969

问题现象:

服务器:某云服务器 内存使用率持续打高,但是通过任务管理器查不到占用内存很高的进程

排查步骤:

1、通过任务管理器分析

核查目标主机的内存使用趋势情况,近7天内存使用情况如下:

image.png


通过任务管理器排查内存使用情况:

image.png


进一步核查进程使用内存情况,发现并没有占用内存很高的进程。

image.png


  • 提交:操作系统为进程保留的虚拟内存,是程序独占的内存(包含物理内存和在页面文件中的内存)(单位:KB)

  • 工作集:进程当前正在使用的物理内存量(单位:KB)

  • 可共享:进程所使用的可与其它进程共享的物理内存量(单位:KB)

  • 专用:由该进程所使用而其它进程无法使用的物理内存量(单位:KB)

    工作集=可共享+专用

从进程内存详细输出结果来看,所有进程内存使用率总和并不会达到那么高的水位线。所以从单纯使用该工具无法进行下一步分析。

2、通过RAMMap分析

RAMMap工具较任务管理器可以看到更详细的内存信息。首先下载该工具,工具下载地址:https://docs.microsoft.com/en-us/sysinternals/downloads/rammap

下载完成之后,直接启动执行文件,可以看到如下内存分析结果:

image.png



其中,Nonpaged Pool(未分页池)占用内存过多,约5G左右。具体这块内存是哪部分使用掉的呢?该工具是无法核查到的,所以需要其他工具进一步核查。

3、通过Poolmon分析

继续上面的排查,想要知道Nonpaged Pool(未分页池)具体是哪个程序占用的,需要借助Poolmon工具分析。

Poolmon 是 wdk(windows develop kits) 里的工具,所以需要先安装 wdk, 但是wdk又依赖于Visual Studio,所以安装顺序为:1)安装Visual Studio--> 2)安装WDK--> 3)安装启动Poolmon

所有资源下载地址:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk

版本兼容性说明,可参考如下信息:

image.png

本次目标服务器操作系统版本为:windows server 2012

1)安装Visual Studio

参考上面给的资源下载链接,下载社区版安装包(下载的时候, 建议准备 10G 磁盘)

image.png


具体安装过程截图,这里就不再一一展示。其中,安装的时候注意必须勾选: “通用 Windows 平台开发”以及左侧“win11 sdk”,安装路径支持自定义。

安装完成之后,默认启动该工具即可。

2)安装WDK

参考上面给的资源下载链接,下载安装包

image.png


改工具安装过程无需特别注意项,直接一步步安装完成即可。

3)安装启动PoolMon工具

WDK安装完成之后,可以在默认路径:下,找到PoolMon工具。

image.png


执行x64目录下的poolmon工具即可。双击执行,可以看到如下界面:

默认列出了nonpage以及page相关信息。按大写字母“P”,可以只列出nonpage相关信息,然后再按大写字母“B”,按照内存大小倒序排序。

image.png

从排序结果可以看到,主要是Tag为:Mloc 占用内存较大。

打开cmd窗口,进入c:/windows/system32/drivers,然后输入命令:

findstr /m /l Mloc *.sys

命令执行结果为:

eamonm.sys edevmon.sys ehdrv.sys epfw.sys epfwwfp.sys

定位到具体的驱动文件之后,进一步核查驱动信息,定位到具体是哪个程序

image.pngimage.pngimage.pngimage.pngimage.pngimage.png


从以上五个截图可以详细看到,这几个驱动文件对应的程序为:ESET Security软件。

核查服务器上运行的程序,确认确实有启动该程序。


最终判断,是由于该程序导致nonpaged pool占用内存较大,从而导致服务器整体内存使用率较高。

建议解决方案:

1、建议尝试修改该安全软件配置,例如:关闭文件扫描。观察内存是否有回落。

2、如修改配置后内存使用率仍无明显改善,建议将ESET Security软件停止/卸载,观察内存是否有回落。


相关文章

apache Hbase2.x  disbale 表卡住

apache Hbase2.x disbale 表卡住

1、现象通过hbase shell disble 表,显示表已经被disable了,但是在drop table 时,又显示出现表被disable2、分析通过命令查看表的状态is_disabled 'E...

linux时间同步工具Chrony的配置和使用

linux时间同步工具Chrony的配置和使用

一、chrony简介       chronony是网络时间协议(NTP)的通用实现。它可以同步系统时钟与NTP服务器,chronyd包含两个程序,chronyd是一个守护进程,chronyc是一个命...

apache Kyuubi部署及对接hive

apache Kyuubi部署及对接hive

1、背景客户重度使用spark sql,但是使用spark thriftserver存在各种各样的问题,我们选择使用kyuubi来替代spark thriftserver的使用2、安装包下载下载地址:...

Docker镜像是有仓库

在Docker中,当我们执行 docker pull xxx 的时候 ,它实际上是从 hub.docker.com 这个地址去查找,这就是 Docker 公司为我们提供的公共仓库。在工作中,我们不可能...

Flume抽取到kafka数据对比测试

Flume抽取到kafka数据对比测试

一、前言同一台机器两个flume进程抽取同一个目录下日志到kafka,对比kafka中数据量二、创建测试topic1、主集群创建topic --tes3kafka-topics --create --...

MySQL 8.0 不可见索引使用

一、具体信息1、在提供 SQL 优化意见的时候包括了两个冗余索引的内容,具体内容如下:查看慢 SQL 的时候发现 database 库 table 表中存在冗余索引,具体冗余索引情况如下:KEY `k...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。