无法理解高平均负载(LA)的原因

无法理解高平均负载(LA)的原因

我有一个裸机服务器,配备 32cores/64thrds CPU 和 64GB RAM。板载 Ubuntu 18.04。运行 pgsql(低负载),~250 个 docker 容器,使用 python 进行网络工作。htop 显示 LA 120(1/5/15 分钟),但我找不到原因。

  • htop 显示所有核心的负载约为 50%
  • 有 12GB 可用 RAM
  • vnstat -l 显示网络适配器的 25% 负载(两侧摘要)
  • 热门节目 wa (iowait) 0.0
  • iostat 显示硬盘上没有任何写入内容,iotop 有时会显示一秒钟内写入速度为 10-20Kb/秒的进程。
  • 顶部不显示红线。全部为灰色(良好)。
  • “ps -eo stat | grep -c D” 和 “ps -eo stat | grep -c D” 显示 “1”

我想我检查了所有 - CPU、RAM、HDD、网络。我了解高 LA 的根源 - 带有 Python 的容器。但我想找到优化的瓶颈。我在哪里可以更多地了解高 LA 的原因?

更新:还有一些补充。我认为瓶颈在 CPU 的某个地方,因为如果我在容器中使用 pypy,LA 会下降,如果使用简单的 pyhton - LA 会增长。但我无法理解,因为 htop 总是显示 CPU 负载 <100%。

答案1

Linux 平均负载是当前(主动)运行或等待执行的进程数。

您有 250 个 Docker 容器,外加系统进程和监控工具。这简直是一个巨大的进程数量。这取决于容器内正在运行的内容以及进程唤醒执行某项操作的频率。如果您将 Docker 容器的数量减少 50%,并且平均负载也下降了 50%,那么您就找到了罪魁祸首。

相关内容