通过OOM(Out Of Memory)内存诊断功能,对操作系统发生OOM的原因进行分析和界定。本文介绍了OOM诊断功能的使用说明。
使用限制
地域限制
本功能目前仅支持中国内地与中国香港。
权限限制
若使用RAM用户,请确保阿里云账号(主账号)已将系统策略
AliyunECSReadOnlyAccess和AliyunSysomFullAccess授予RAM用户。操作系统限制
架构
操作系统
x86架构
Rocky Linux 9.5
Rocky Linux 9.1
Ubuntu 20.04
Alibaba Cloud Linux 3 容器优化版
Rocky Linux 8.8
Ubuntu 22.04
Alibaba Cloud Linux 3 Pro
Alibaba Cloud Linux 2/3
CentOS 7.6及更高版本,或CentOS 8
Anolis OS 7/8
Ubuntu 24.04
ARM架构
Alibaba Cloud Linux 3 Pro
Alibaba Cloud Linux 3
使用场景
场景 | 说明 |
系统全局内存不足 | 整个主机的内存使用过量,导致系统内存不足,从而触发了OOM。 |
cgroup内存使用超限 | 在指定的cgroup下,进程的内存使用超过了设定限制,导致该cgroup整体的内存使用达到上限,从而触发了OOM。 |
父级cgroup内存使用超限 | 父cgroup下的进程内存使用超标,导致父cgroup整体内存使用达到限制,从而触发了OOM。在终止进程时,系统选择了子cgroup下的进程执行终止操作。 |
内存节点的内存不足 | 在NUMA存储模式下,操作系统可能具有多个内存节点(可通过执行 |
共享内存过度使用导致cgroup内存使用超限 | 在cgroup内存使用超限的情况下,进一步发现cgroup下的共享内存使用已超过总的cgroup用户态内存的30%。因此,可以认为造成OOM的主要原因是共享内存的过量使用,需要进一步分析共享内存的主要占用者。 |
操作步骤
登录云监控2.0控制台,选择目标工作空间,在左侧导航栏单击应用中心。
在应用中心页面,单击ECS洞察。
在页面顶部单击系统诊断(SysOM)。
在诊断模式中选择节点诊断,在诊断类型列表中,选择内存诊断;在诊断项列表中,选择OOM诊断;选择目标实例ID后,单击执行诊断。
在诊断记录区域,单击查看报告。
诊断报告
基础信息
基础信息部分包含单次诊断的基本信息,包括诊断实例ID(资源ID)、诊断项、诊断报告ID及诊断发起时间。
诊断结论
该部分展示本次诊断的结论,详细的描述导致本次OOM发生的主要原因。
诊断建议
根据诊断结果,提出相应的处理建议,以减少或消除此类OOM的发生。
诊断详情
OOM诊断详情
此处会给出触发OOM的任务、任务所属cgroup、触发OOM的cgroup以及OOM类型。
(Host OOM)内存占用分析
当OOM的是由主机内存不足导致时,诊断报告中会给出OOM发生时主机的内存占用情况,包括内存的系统、应用、空闲内存占比、系统内存使用分布以及应用内存使用分布。
(cgroup OOM)共享内存文件占用
当OOM的原因是cgroup内共享内存使用过多时,诊断报告中会给出共享内存文件占用排序表格。
OOM发生时刻任务列表
此部分将会列举出 OOM 发生时刻,系统的任务列表,包含任务名称、进程ID和用户态内存用量(RSS)。
(不可回收Slab)不可回收Slab列表
当OOM的原因是不可回收的Slab内存使用过多时,并且操作系统的内核版本在5.10以上(比如 Alinux3)诊断报告中将会列举出不可回收地Slab占用列表。