一 问题背景
通过监控告警系统得之有台线上设备触发了oom,需要分析下触发原因,系统运行状况。
二 问题分析
首先,通过监控系统查看对应期间系统内存使用情况。发现系统使用率一致比较稳定,较使用率较低,排除系统层面内存耗尽风险。
其次,登陆系统,查看/var/log/messages日志文件,查看oom相关日志信息。
如上所示,为一段完整oom信息。其中,
1 处为对应调用栈信息,其中有多个mem_cgroup_*相关函数,结合第一幅图内存整体使用率较低,可初步分析为某个cgroup内存使用超限导致
2 处通过“Memory cgroup out of memory”关键字,可确定是由于某个cgroup内存超限导致。后面为对应的Kill掉的进程信息
通过上述截图可知,系统在打印oom日志时,会根据不同类型使用不同的关键字,“Out of memory”为全局内存超限,Memory cgroup out of memory“”为某个cgroup内存超限。
3 处通过“invoked oom-killer”关键字可以看到触发oom的进程信息
4 处为对应mem_cgroup信息,完整路径为/sys/fs/cgroup/memory/*
5 处为对应cgroup内存使用量和总量信息
最后,根据上述信息结合业务情况便可制定对应处理方案,如扩容或者优化业务进程等。