这 8 类问题,SysOM 2.0 OOM 诊断助你快速定位异常 | 龙蜥技术

原创
2023/03/10 20:00
阅读数 93

文/刘馨蔚,系统运维 SIG  Contributor

小 A 准备下班时,突然收到云上专门对接客户前线同事电的话。“小 A,小 A,一个我们游戏的大客户的集群出了问题,影响了业务,需要紧急排查一下”,小 A 也听出了紧急,放下包叹了口气,心想“刚和老婆说回去吃饭呢,看来赶不上咯”。小 A 立马回到办公桌向前线同事了解详细情况,原来这个大客户云上 pod 内业务突然不可用,检查后发现有 OOM Killed 的报警,但是发现 pod 的使用内存并没有到阈值 limit 的 8G,请求排查 OOM 的原因并希望给出相关建议避免同样情况再次发生。

小 A 详细了解情况后,定位到是和 OOM 相关的问题。这时小 A 突然想到了团队内开发了针对 OOM 的诊断分析的功能,再向同事确认客户也安装了 SysOM 后建议客户立马进行 SysOM 中的 OOM 诊断。根据 OOM 诊断后诊断出了如下结果:

图中可以看出发生了两次 OOM,并且怀疑有内存泄漏,内核占用了近 5G 的内存,将这个结果和前线同事对齐后,结合客户的系统日志“TCP out of memory.”等字样,排查出问题的原因是业务接收数据不及时,导致数据驻留在内核中。此时建议客户优化业务程序,及时处理接收队列中的数据报文,并通过重启业务止血。

前线的同事纷纷点赞小 A 的排查速度和 SysOM 中诊断功能的省时省力,还让小 A 赶紧介绍一下 SysOM 的这个 OOM 诊断。小 A 也对这个工具也十分熟悉,就和前线的同事好好介绍了介绍:

OOM(Out of memory) 是日常或生产环境中比较容易碰到的异常,当 OOM 发生时一般伴随着在内核日志中打印相关异常信息和某个进程被 Kill 掉的现象:

test invoked oom-killer: gfp_mask=0x6280ca(GFP_HIGHUSER_MOVABLE|__GFP_ZERO), nodemask=(null), order=0, oom_score_adj=0

OOM 发生在 Linux 在整机或 cgroup 剩余内存低于水线时,如果通过内存回收、规整等方式都无法满足内存分配操作,便会触发 OOM killer 流程来强行释放进程内存,如下图所示:
有一部分小伙伴觉得 OOM 根本不算什么异常,甚至如果不看日志的话根本没有感知到;但是有一部分小伙伴却深受 OOM 的“迫害”,因为 OOM 可能会导致关键业务中断,甚至系统无法正常运行等现象。SysOM 的 OOM 诊断可以检测 8 类 OOM 的问题,具体如下图所示:

当发生了 OOM 的问题时,可以通过 SysOM 的 OOM 检测来对系统的 OOM 提供快速检测、分析和提供修复建议

例如整机内存低于水线时,通过 SysOM 的 OOM 诊断可以得到如下界面:

SysOM 检测页面给出了 OOM 当时的内存情况、发生原因和使用内存 TOP 10 的内存使用排名,结果表明这是属于 host 内存 limit 造成的 OOM。这种情况下我们可以:

1、先评估使用内存多的业务进程内存占用是否合理,必要时优化业务进程内存申请量。

2、还排查进程 oom_score_adj 设置是否合理,不合理的 oom_score_adj 值会导致进程占用大量内存而不被 kill 掉。

例如 cgroup 发生 OOM 时,通过 OOM 诊断可以得到如下界面:

可以看到是由于进程 test 所在的 cgroup mm_test 发生 OOM,原因为 cgroup 内存usage 达到 limit 值(90M)。这种情况下我们能够比较快速直接的判断出是 cgroup 内存 usage 达到了上限,我们可以调整使用情况或者 cgroup 的内存可用上限。除了使用达到 limit,oomcheck 还有检测 shmem 泄漏导致的 OOM。

总的来说,OOM 主要可以分为整机和 cgroup 级别的异常,SysOM 中的 OOM 诊断可以快速准确的定位到系统发生的 OOM 异常,从而用户可以根据不同的原因应用不同的方法解决 OOM。

小 A 向前线同事介绍完后,大家都表示以后的问题排查、诊断效率肯定有很大的提升。和同事、客户都交接好后,小 A 感叹着 SysOM 对系统、内核的各种诊断能力的健全,省时省力,快速定位到异常问题的同时也能够指引下一步解决方案。哼着小曲儿回家后,小 A 发现老婆热的汤还是暖呼呼的呢。

龙蜥大讲堂 SysOM 2.0 系列直播《SysOM 2.0 内存相关功能介绍》讲解了内存诊断中心功能的基本使用和应用场景,展示了三个内存诊断的使用参数和结果分析,也在官网上进行了实时演示。视频回放及 PPT 课件获取见下:

【PPT 课件获取】:关注微信公众号(OpenAnolis),回复“ 龙蜥课件 ” 即可获取。有任何疑问请随时咨询龙蜥助手—小龙(微信:openanolis_assis)。
【视频回放】:视频回放可前往龙蜥官网 (或阅读原文直达) https://openanolis.cn/video  查看。
—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。

往期精彩推荐

1.人人都可以参与开源!龙蜥社区最不容错过的开发者活动来了

2.小龙力荐!人人都可以完成算法代码,简单易上手
3.首届玄铁 RISC-V 生态大会上海举办 龙蜥操作系统持续深度参与标准共建
4.从新手小白到运维大咖,SysOM 多场景宕机实例解析 | 龙蜥技术

5.Cloud Kernel SIG月度动态:发布 ANCK 新版本及 Plugsched v1.2.0

▼ 欢迎点击 阅读原文 ,查看「系统运维 SIG」主页。

本文分享自微信公众号 - OpenAnolis龙蜥(OpenAnolis)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部