问题现象

使用Linux系统ECS实例时,出现系统卡顿、内部服务响应速度变慢等问题。通过实例健康诊断显示:该实例当前内存的使用率已超过80%。

可能原因

ECS实例中存在异常的进程或服务,占用大量内存,导致内存使用率过高。一般来说,当内存使用率≥80%时,定义为内存使用率过高。建议您通过创建报警规则,实时监控ECS实例的波动情况,具体操作,请参见创建报警规则。

解决方案

您可以参考以下步骤,解决内存使用率过高问题。

  1. 远程连接ECS实例。
    具体操作,请参见连接方式概述。
  2. 查看ECS实例是否存在内存使用率过高情况。
    free
    Linux系统ECS实例如何处理系统内存使用率过高问题?(图1)
    内存使用率=(total-free)/total,当内存使用率≥80%时,定义为内存使用率过高。
    • total:可供系统使用的内存大小,物理内存减去预留位和内核使用内存。
    • free:当前系统完全没有使用的内存。
  3. 查看当前实例是否存在异常服务或进程。
    • 如果不存在异常服务或进程:建议您升级实例规格,具体操作,请参见包年包月实例升配规格或按量付费实例变配规格。
    • 如果存在异常服务或进程,请继续执行步骤4。
    1. 执行如下命令,从进程纬度来查看CPU、内存等资源的使用情况。
      top
    2. 同时按Shift+M键查看内存使用率排行。
      根据内存使用率排行,结合业务情况,确认进程内存使用率是否正常。
  4. 处理排查到的异常进程或服务,解决内存使用率过高问题。
    警告 终止操作系统关键进程可能导致系统重启,请谨慎操作。
    1. 想要终止某个进程时,输入小写字母k
    2. 输入要终止的进程PID。
      默认为输出结果的第一个PID,如下图所示,假如想要终止PID为561的进程,输入561后按Enter键。Linux系统ECS实例如何处理系统内存使用率过高问题?(图2)
    3. 操作成功后,界面会出现类似Send pid 561 signal [15/sigterm]的提示信息让,按Enter确认即可终止进程。Linux系统ECS实例如何处理系统内存使用率过高问题?(图3)

来源:阿里云