首页 > 解决方案 > 了解 docker 容器 cpu 的使用

问题描述

docker stats说明cpu使用率很高。但是top命令输出显示没有使用 88.3% 的 cpu。容器内部是一个 java 服务 httpthrift 服务。

docker stats :
CONTAINER           CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
8a0488xxxx5        540.9%             41.99 GiB / 44 GiB   95.43%              0 B / 0 B           0 B / 35.2 MB       286

最高输出:

top - 07:56:58 up 2 days, 22:29,  0 users,  load average: 2.88, 3.01, 3.05
Tasks:  13 total,   1 running,  12 sleeping,   0 stopped,   0 zombie
%Cpu(s):  8.2 us,  2.7 sy,  0.0 ni, 88.3 id,  0.0 wa,  0.0 hi,  0.9 si,  0.0 st
KiB Mem:  65959920 total, 47983628 used, 17976292 free,   357632 buffers
KiB Swap:  7999484 total,        0 used,  7999484 free.  2788868 cached Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                               
  8823 root      20   0 58.950g 0.041t  21080 S 540.9 66.5  16716:32 java 

如何减少 cpu 使用率并使其低于 100%?

标签: dockermicroservices

解决方案


根据顶级手册页

在 Solaris 模式下运行时(“I”关闭),任务的 CPU 使用率将除以 CPU 总数。发出此命令后,您将被告知此切换的新状态。

因此,在交互模式下使用 top 时按 键I,您将切换到 Solaris 模式,CPU 使用率将除以 CPU(或内核)总数。

PS:此选项并非在所有版本的 top 上都可用。


推荐阅读