本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
问题现象
使用Linux实例时,出现如下现象。
系统运行卡顿、服务响应时长较长、应用性能下降等问题。
通过ECS控制台查看实例内存使用率监控时,发现内存使用率过高(参考值:当前内存使用率> 80%,可认为内存使用率过高)。
收到内存使用率超过设定阈值的告警信息。
可能原因
引起内存使用率过高的常见原因如下:
异常的进程或服务占用大量内存,导致内存使用率过高。
业务程序的业务流量过大,实例的物理内存不足以支撑业务开展所需的内存用量。
排查步骤
使用top查看实例内存使用率情况
您可以参考以下步骤,解决内存使用率过高的问题。
远程连接ECS实例。具体操作,请参见通过SSH的方式连接实例(Linux)。
查找当前实例中占用内存过高的进程。
执行如下命令,从进程维度查看CPU、内存等资源的使用情况。
top
说明您可输入小写字母q退出top命令。
按下
M
键以按照进程的内存使用率进行排序,回显信息示例如下,表明进程号为13183的进程占用最多的内存。系统摘要信息及进程指标监控字段说明如下:
处理内存使用率高的问题
内存占用较多问题的原因及解决方案如下。
问题现象 | 原因 | 解决方案 |
单个用户程序或进程长时间占用大量内存 | 异常程序,进程占用过多内存。 |
|
正常用户程序或进程长时间占用大量内存资源。导致内存使用率较高。 | 该程序为正常业务程序或进程,运行时占用过多内存资源。 | 如果实例出现内存资源瓶颈,您可以结合实际情况选择相应的处理策略。
|
单个程序或进程偶发过高内存占用,但持续时间较短,且发生频率较低。 | 程序或进程中存在瞬时流量或定时任务,导致短时间内消耗大量内存。 |
|
没有单个程序或进程占用大量内存资源,但整体内存使用率较高 | 当前实例的服务正常运行所需内存资源大于实例的内存规格。 | 如果实例出现内存资源瓶颈,您可以选择升级实例规格。相关操作,请参见修改实例规格。 |
相关文档
关于Windows系统内存使用率高的问题排查及解决方案,请参见Windows系统内存使用率较高问题的排查及解决方案。
如果需要提前采集内存指标以便分析异常,您可以使用atop工具。相关内容,请参见使用atop工具监控Linux系统指标。