← ClaudeAtlas

diag-container-oomlisted

容器 OOM 全链排查。从 dmesg OOM killer → cgroup memory limits → Docker/Compose memory 配置 → swap → 应用内存分析,定位根因并输出修复建议。
seed-forge/harness-ai-kit · ★ 22 · AI & Automation · score 74
Install: claude install-skill seed-forge/harness-ai-kit
# Container OOM Full-Chain Diagnostics ## 用途 当容器被 OOM killed、`docker inspect` 显示 `OOMKilled: true`、或系统日志出现 OOM killer 记录时触发。 ## 输入 - 目标主机 + 容器名称/ID - 可选:Compose 文件路径 ## 输出 - OOM 根因分析报告 + 修复建议 ## 诊断步骤 ### Step 1: 确认 OOM 事件 ```bash # 内核 OOM killer 日志 dmesg | grep -i "oom\|killed process" | tail -20 journalctl -k | grep -i oom | tail -20 # Docker 容器 OOM 状态 docker inspect {container} --format='{{.State.OOMKilled}} {{.State.ExitCode}} {{.State.Status}}' # 最近 OOM 的容器 docker ps -a --filter "status=exited" --format '{{.Names}}: exit={{.Status}}' | head -10 ``` ### Step 2: Cgroup 内存限制 ```bash # 容器的内存限制 docker inspect {container} --format='Memory limit: {{.HostConfig.Memory}} Swap: {{.HostConfig.MemorySwap}}' # cgroup v1 cat /sys/fs/cgroup/memory/docker/{container_id}/memory.limit_in_bytes cat /sys/fs/cgroup/memory/docker/{container_id}/memory.usage_in_bytes cat /sys/fs/cgroup/memory/docker/{container_id}/memory.max_usage_in_bytes # cgroup v2 cat /sys/fs/cgroup/system.slice/docker-{container_id}.scope/memory.max cat /sys/fs/cgroup/system.slice/docker-{container_id}.scope/memory.current cat /sys/fs/cgroup/system.slice/docker-{container_id}.scope/memory.events ``` ### Step 3: Compose / 运行时配置 ```bash # docker-compose.yml 中的 memory 配置 grep -A 5 "deploy\|mem_limit\|memory" docker-compose.yml # 当前所有容器的内存限制 docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.Container}}" ``` ### Step 4: 系统内存状态 ```bash # 系统内存 free -h cat /proc/meminfo | grep