平均负载高,如何解决?

平均负载高,如何解决?

我需要修复我的虚拟服务器。它出什么问题了?需要内存吗?要不然?

4核4GB内存

top - 10:06:13 up 53 min,  1 user,  load average: 31.74, 30.17, 24.79
Tasks: 180 total,   1 running, 179 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.9%us,  0.2%sy,  0.0%ni, 69.3%id, 29.6%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4194304k total,  2753136k used,  1441168k free,        0k buffers
Swap:  4194304k total,        0k used,  4194304k free,  1060564k cached

答案1

从您提供的信息我只能知道您的服务器需要更快的磁盘。

您可以尝试使用atop查看哪个程序执行最多的磁盘 IO。如果幸运的话,您可以配置该程序以减少 IO。

答案2

有关如何计算平均负载的讨论,请查看有点过时(但仍然有用)的文章 -

 http://www.linuxjournal.com/article/9001?page=0,1

根据您的数据,由于您的平均负载约为 24 - 32 并且您有 4 个核心,因此平均负载/核心约为 6 - 8 (等待 CPU 的进程)。由于您的 CPU 利用率较低(69% 空闲),我们只能得出结论,您有大量线程等待 I/O 完成(平均负载计算包括等待 I/O 完成的线程)。高等待百分比 (~30) 似乎也表明了同样的情况。您可以做两件事 - 1. 在磁盘上运行 iostat 以查看每个磁盘等待时间的详细统计信息。 2. 运行 ps 并检查该状态中是否有“D”,以查看等待 I/O 完成的线程。解决上述问题的下一步(取决于问题所在)可能包括更好更快的磁盘或仔细查看代码中的 I/O 路径。您可以使用其他工具(例如 perf)来更深入地了解应用程序等待时间的确切来源。

相关内容