![什么(低优先级线程)导致我的节点高山容器中的 CPU 使用率为 100%?](https://linux22.com/image/783819/%E4%BB%80%E4%B9%88%EF%BC%88%E4%BD%8E%E4%BC%98%E5%85%88%E7%BA%A7%E7%BA%BF%E7%A8%8B%EF%BC%89%E5%AF%BC%E8%87%B4%E6%88%91%E7%9A%84%E8%8A%82%E7%82%B9%E9%AB%98%E5%B1%B1%E5%AE%B9%E5%99%A8%E4%B8%AD%E7%9A%84%20CPU%20%E4%BD%BF%E7%94%A8%E7%8E%87%E4%B8%BA%20100%EF%BC%85%EF%BC%9F.png)
我有一个节点 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 并在那里部署后,问题就消失了。