我有一个节点 alpine docker 容器(托管在 Azure 上),它定期达到 100% 的 CPU 使用率。但是,运行top
或htop
命令显示没有线程具有高 CPU 使用率。
我如何找出原因?似乎节点进程不会导致高 CPU 使用率。我还运行了节点分析器,CPU 为 100% 时的 CPU 配置文件与常规配置文件没有明显变化。
htop屏幕显示 CPU 为 100%(大部分为蓝色,表示低优先级线程)。但下面的线程列表仅显示节点的使用率为 17%。
CPU 使用率过高的情况具有一定的周期性: 随时间变化的 CPU 使用率。它是在部署后几天开始的,但没有重大的代码变化(并且恢复也没有解决问题)。
编辑:
vmstat(第一次是在 CPU 正常使用期间,第二次是在 CPU 100% 使用期间)
ae7d7f5ef9c8:~# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
7 0 457816 296204 275828 1383336 4 6 167 571 0 17 33 13 54 1 0
0 0 457816 296576 275860 1383388 0 0 0 256 0 4297 30 14 56 0 0
0 0 457816 296576 275908 1383340 0 0 0 296 0 4301 23 8 69 0 0
0 0 457816 296576 275932 1383348 0 0 0 208 0 2985 22 8 70 0 0
0 0 457816 296576 275940 1383348 0 0 0 80 0 2444 21 4 75 0 0
ae7d7f5ef9c8:~# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 459432 285672 259408 1331844 4 6 167 571 0 23 33 13 54 1 0
1 0 459432 247584 259420 1331860 0 0 0 124 0 4078 76 24 0 0 0
1 0 459432 122716 259468 1331988 0 0 0 300 0 5521 64 36 0 0 0
2 0 459432 282488 259504 1332020 0 0 0 212 0 5351 76 24 0 0 0
5 0 459432 228736 259596 1332024 0 0 0 340 0 3257 76 24 0 0 0
答案1
更新:问题似乎出在 Azure Webapp 平台上。创建新的 Webapp 并在那里部署后,问题就消失了。