首页/云/云与容器速查/容器 CPU 占用高排查

容器 CPU 占用高排查

容器吃满 CPU:先用 stats/top 定位到进程,再看是忙等、死循环还是限流假象;cgroup 的 cpu.stat 能看出 throttling,区分『真忙』与『被限速』。

云与容器速查云更新于 2026-10-12
定位进程docker stats --no-stream;docker top myapp 看容器内进程
容器内exec 进去 top -b -n1 / ps aux --sort=-%cpu
限流检查cat /sys/fs/cgroup/.../cpu.stat 的 nr_throttled/throttled_time
常见根因死循环、正则回溯、GC 频繁、日志风暴
手段线程栈/pprof 抓现场;需要时临时降权或限流

排查命令

排查命令
docker stats --no-stream myapp
docker top myapp
docker exec myapp sh -c 'ps aux --sort=-%cpu | head -10'
docker exec myapp cat /sys/fs/cgroup/cpu.stat 2>/dev/null | head
CPU 突刺还可能是宿主争抢(steal):容器内看不出,宿主 top 的 st 指标能确认。

易错点

  • 把限流当故障:CPU 被打满但被限速,进程没崩只是变慢
  • 只看宿主 CPU:容器数多时无法归因到具体服务

数据来源与参考

  • Docker Docs:docker stats
  • Linux cgroup 文档(cpu.stat)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌