You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker stats部分容器CPU利用率显示0%,同节点其他容器正常求助

排查步骤

1. 验证CPU绑定配置有效性

先确认容器实际的CPU核心绑定是否与启动参数一致:

  • 进入目标容器执行:cat /proc/self/status | grep Cpus_allowed_list,检查输出是否匹配--cpuset-cpus指定的核心范围。
  • 在宿主机上执行:docker inspect <container-id> | grep -A5 CpusetCpus,对比配置值与期望值。
    若配置不匹配,说明Docker在invoker0节点的cpuset分配逻辑存在异常。

2. 检查cgroup CPU统计数据

Docker stats依赖cgroup采集CPU使用数据,直接查看底层统计:

  • 获取容器的cgroup路径:docker inspect <container-id> | grep -i cgroup,得到类似/sys/fs/cgroup/cpu,cpuacct/docker/<container-id>的路径。
  • 查看统计文件:cat <cgroup-path>/cpuacct.stat,若user和system数值持续为0,说明cgroup未采集到容器的CPU使用数据,大概率是cgroup子系统挂载异常。
  • 对比invoker1节点同类型容器的该文件数值,确认是否有正常增长。

3. 排查宿主机cgroup挂载状态

确认invoker0节点的cgroup子系统挂载是否正常:

  • 执行:mount | grep cgroup,检查cpu、cpuacct子系统是否正常挂载到/sys/fs/cgroup/cpu,cpuacct。
  • 查看系统级cgroup统计:cat /sys/fs/cgroup/cpu/cpu.stat,确认基础统计功能正常。
    若挂载异常,可尝试重新挂载:mount -t cgroup -o cpu,cpuacct none /sys/fs/cgroup/cpu,cpuacct(操作前需备份现有配置,避免影响其他运行中容器)。

4. 对比节点的Docker与内核版本

检查invoker0和invoker1的版本差异:

  • 执行:docker version和uname -r,对比两者的Docker版本、内核版本。部分Docker版本与特定Linux内核组合存在cpuset统计bug,比如早期版本绑定核心后统计失效的问题。
    若版本不一致,可将invoker0的Docker版本升级至与invoker1一致,或查阅对应版本的Release Notes确认是否有相关修复。

5. 检查宿主机CPU核心状态

确认invoker0上指定的CPU核心是否在线可用:

  • 执行:cat /sys/devices/system/cpu/cpu<core-id>/online(替换<core-id>为绑定的核心编号),输出应为1(表示核心在线)。
  • 执行htop或top,观察指定核心是否有实际负载。若核心无任何负载,可能是容器进程未被调度到目标核心上。

6. 检查Openwhisk Invoker进程权限

确认invoker0上的Openwhisk invoker进程是否具备修改cpuset的权限:

  • 执行:ps aux | grep invoker,查看进程是否拥有CAP_SYS_NICE或CAP_SYS_ADMIN权限。
  • 对比invoker1节点的invoker进程权限配置,排查权限差异导致的问题。

内容的提问来源于stack exchange,提问作者kz28

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:35:07