一 問題背景
通過監控告警系統得之有臺線上設備觸發了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內存使用量和總量信息
最后,根據上述信息結合業務情況便可制定對應處理方案,如擴容或者優化業務進程等。