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

小丫2年前技术文章13086

问题现象:

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

排查步骤:

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软件停止/卸载,观察内存是否有回落。


相关文章

PostgreSQL 锁等待排查

PostgreSQL 锁等待排查

说明在数据库中,常用 锁 和 MVCC 来保障事务的一致性及提高并发性。锁问题的定位和排查也是数据库运维人员必会的技能,本篇文章介绍 PostgreSQL 如何排查定位锁堵塞问题。1. Postgre...

使用 cgroups为impala设置 CPU 限制

使用 cgroups为impala设置 CPU 限制

有时应用会占用大量 CPU 时间,这可能会对环境的整体健康状况造成负面影响。使用 /sys/fs/ 虚拟文件系统,利用 控制组版本 (cgroups) 为应用配置 CPU 限制。先决条件您有 roo...

k8s service IP不能ping通?

k8s service IP不能ping通?

1、先看下serviceIP是怎么来的?serviceIP是serviceController生成的,参数--service-cluster-ip-range string会配置在controller...

oracle v$archive_log视图过期信息清理

      在使用RMAN命令删除归档后,查询v$archived_log视图会发现name列为空了,但其他列的信息还保留,时间长了会留下很多过期的信息,影响维护工作,需要将过期的信息删除。 出现这样...

8.0 新特性-Redo 配置的变化

8.0 新特性-Redo 配置的变化

说明本篇文章将介绍 MySQL Redo 日志的作用,及需要关注的参数,在 5.7、8.0 Redo 的变化。1. Redo 日志介绍1.1. Redo 有什么作用为了取得更好的读写性能,InnoDB...

数据湖技术之iceberg(六)Iceberg表数据组织与查询

数据湖技术之iceberg(六)Iceberg表数据组织与查询

1     Iceberg表数据组织与查询1) 下载avro-tools jar包由于后期需要查看avro文件内容,我们可以通过avro-tool.jar来查看...

发表评论    

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