Windows云服务器内存使用率高怎么办?
问题描述
使用Windows系统的弹性云服务器时,出现系统卡顿、内部服务响应慢等问题。在通过云监控查看实例内存监控时,发现内存使用率过高或收到内存使用率过高的告警信息。
可能原因
引起内存使用率过高的常见原因如下:
- 异常的进程或服务占用大量内存,导致内存使用率过高。
- 业务程序的业务流量过大,实例的物理内存不足以支撑业务开展所需的内存用量。
处理方法
- 登录弹性云服务器,具体操作,请参见Windows ECS登录方法概述。
- 在桌面底部单击“
”按钮,或打开Win后单击搜索框,输入“任务管理器”进行搜索。
- 在“任务管理器”窗口单击“性能”页签,单击左侧“内存”标签,查看总内存使用情况。
图1 任务管理器
- 在搜索框输入“资源监视器”进行搜索,打开“资源监视器”,单击“内存”页签,查看各个进程的内存使用情况。
可以通过查看提交(KB)内存的大小,确定消耗内存较多的进程,根据业务情况判断此进程是否正常。
图2 资源监视器“物理内存”窗口的参数说明如下。
- 为硬件保留的内存:系统为硬件设备预留的一部分物理内存。这些设备包括 GPU(图形处理单元)、声卡、网卡、蓝牙模块等。被保留的内存无法被普通应用程序直接使用,而是专门用于支持硬件设备的正常运行。
- 正在使用:由进程、驱动程序、操作系统使用的内存。
- 已修改:内容必须写入磁盘才能用于其他用途的内存。
- 备用:包含未使用的缓存数据和代码的内存。
- 可用:不包含任何有效数据,当进程、驱动程序、操作系统需要申请更多内存时优先使用的内存。
- 缓存:当文件被打开时,系统会将文件保存在缓存中,方便下次快速读写。Windows 2008 R2及以后版本,对该缓存的使用做了限制,有一部分物理内存不会被缓存使用,保证系统即使在缓存过大的时候,也有可用物理内存,满足程序使用需求。
- 如果通过任务管理器和资源监视器没有找到占用内存较多的进程,但实例内存使用率很高,有可能是因为系统进程的内存占用过高引起。可以使用微软官方提供的RAMMap工具进行进一步分析。
该工具支持查看系统进程在RAM中缓存了多少文件数据,以及内核和设备驱动程序使用了多少RAM等功能。下载链接:RAMMap
双击打开RAMMap查看内存详情。
图3 RAMMapRAMMap工具的选项卡会以不同方式显示资源使用信息,每个选项卡的显示方式说明如下。
- 使用计数/Use Counts:按类型和分页列表列出的使用情况摘要。
- 进程/Processes:进程工作集大小。
- 优先级摘要/Priority Summary:确定备用列表大小优先级。
- 物理页/Physical Pages:所有物理内存的每页使用量。
- 物理范围/Physical Ranges:物理内存地址。
- 文件摘要/File Summary:RAM 中的文件数据(按文件显示)。
- 文件详细信息/File Details:按文件显示的各个物理页。
- 观察内存占用情况,进行处理。
- 场景一:单个用户程序/进程长时间占用大量内存,判断为异常程序。
通过“任务管理器”或“资源监视器”中定位到该进程,右键单击该进程,选择“结束程序”即可。
结束进程前请确保您了解该进程的相关信息,避免误操作导致业务中断。
- 场景二:没有单个程序/进程占用大量程序,或占用大量内存的是正常程序。
建议变更单台ECS规格到更大的规格。
- 场景三:单个程序/进程偶发过高内存占用,但持续时间较短且频率较低,可能是由于程序中存在瞬时流量或定时任务导致。
可以选择配置虚拟内存或变更单台ECS规格到更大的规格。
- 场景一:单个用户程序/进程长时间占用大量内存,判断为异常程序。