本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
当您在使用Windows实例时遇到内存使用率过高,导致实例运行卡顿等问题时,您可以通过排查以定位内存使用率过高的原因,本文为您介绍上述问题的排查方法及解决方案。
本文档以Windows 2022为例,不同版本的操作系统界面略有差异,请您以目标操作系统的实际界面为准。
问题现象
使用Windows系统的ECS实例时,出现系统卡顿、内部服务响应慢等问题。在通过ECS控制台查看实例内存监控时,发现内存使用率过高或收到内存使用率过高的告警信息。
可能原因
引起内存使用率过高的常见原因如下:
异常的进程或服务占用大量内存,导致内存使用率过高。
业务程序的业务流量过大,实例的物理内存不足以支撑业务开展所需的内存用量。
解决方案
要定位内存使用率过高的问题,您可以参见下述操作步骤进行问题的排查定位。
查看实例总内存使用率
您可以使用Windows系统中默认安装的任务管理器应用查看内存使用情况。
在Windows桌面左下角的搜索框中,输入任务管理器,并按
Enter键
打开任务管理器程序。在任务管理器界面中单击性能页签,然后单击左侧内存,查看内存使用情况。
查看进程占用的内存详情
您可以使用Windows系统中默认安装的资源监视器应用查看内存等资源的使用情况,该应用支持查看单个进程的内存使用情况。
在Windows桌面左下角的搜索框中,输入资源监视器,并按
Enter键
打开资源监视器程序。在资源监视器界面中单击内存页签,以查看各个进程的内存使用情况。对于各个进程,可以通过查看提交(KB)内存的大小,以确定消耗内存较多的进程,然后根据您的实际业务,判断此进程是否正常。
物理内存的使用包含如下几个部分,各部分的相关说明如下。
为硬件保留的内存:系统为硬件设备预留的一部分物理内存。这些设备包括 GPU(图形处理单元)、声卡、网卡、蓝牙模块等。被保留的内存无法被普通应用程序直接使用,而是专门用于支持硬件设备的正常运行。
正在使用内存:由进程、驱动程序、操作系统使用的内存。
已修改内存:内容必须写入磁盘才能用于其他用途的内存。
备用内存:包含未使用的缓存数据和代码的内存。
可用内存:不包含任何有效数据,当进程、驱动程序、操作系统需要申请更多内存时优先使用的内存。
缓存:当文件被打开时,系统会将文件保存在缓存中,方便下次快速读写。Windows 2008 R2及以后版本,对该缓存的使用做了限制,有一部分物理内存不会被缓存使用,保证系统即使在缓存过大的时候,也有可用物理内存,满足程序使用需求。
查看系统进程占用的内存详情
如果通过任务管理器及性能监视器没有找到占用内存较多的进程信息,但实例内存使用率很高,那么很有可能是系统进程的内存占用过高,此时,您可以使用微软官方提供的RAMMap工具进一步分析问题,该工具支持查看系统进程在 RAM 中缓存了多少文件数据,以及内核和设备驱动程序使用了多少 RAM等功能。
下载并解压RAMMap工具。
访问微软官网下载RAMMap工具,下载后对压缩文件进行解压。
双击打开RAMMap工具并查看内存占用详情。
RAMMap工具的选项卡会以不同方式显示资源使用信息,每个选项卡的显示方式说明如下。
使用计数:按类型和分页列表列出的使用情况摘要。
进程:进程工作集大小。
优先级摘要:确定备用列表大小优先级。
物理页:所有物理内存的每页使用量。
物理范围:物理内存地址。
文件摘要:RAM 中的文件数据(按文件显示)。
文件详细信息:按文件显示的各个物理页。
处理内存使用率高的问题
内存占用较多问题的原因及解决方案如下。
问题现象 | 原因 | 解决方案 |
问题现象 | 原因 | 解决方案 |
单个用户程序或进程长时间占用大量内存 | 异常程序,进程占用过多内存。 | 通过在任务管理器或者资源监视器中定位到内存占用较多的程序,在该程序上右键点击,并选择结束程序即可。 在您结束进程前,请务必确保您了解该进程的相关信息,避免因误操作导致您的业务中断。 |
| 当前实例的服务正常运行所需内存容量大于实例的物理内存量。 | 建议您评估升级实例规格,以增加实例的物理内存。相关操作,请参见修改实例规格。 |
单个程序或进程偶发过高内存占用,但持续时间较短,且发生频率较低。 | 程序或进程中存在瞬时流量或定时任务,导致短时间内消耗大量内存。 |
|
相关文档
关于处理Linux系统内存使用率高的问题,请参见如何处理Linux系统内存使用率过高问题。
- 本页导读 (1)
- 问题现象
- 可能原因
- 解决方案
- 查看实例总内存使用率
- 查看进程占用的内存详情
- 查看系统进程占用的内存详情
- 处理内存使用率高的问题
- 相关文档