我的服务器负载跳升至前 22,CPU 仅 50%,RAM 1858/5120。如何知道什么进程导致平均负载如此之高。Linux Debian
答案1
$ grep processor /proc/cpuinfo |wc -l
4
这将为您提供系统上的 CPU 数量。如果平均负载高于此数字,但 CPU 仅为 50%,则很有可能您的系统正在执行大量 IO。在这种情况下:
aptitude install iotop
iotop 将为您提供消耗磁盘 IO 的进程列表。
答案2
如何知道什么进程导致平均负载如此之高。
您可以使用top
,按O(大写 o),然后按l(CPU 时间),然后Enter。
答案3
僵尸进程也会影响平均负载,我建议:
mike@mike-:~$ ps -eo state |uniq -c
171 S
1 R
1 D
2 S
--> 在这里你可以计算每个状态的进程数
D(进程因等待资源而阻塞)
僵尸
--> D 状态的典型问题是使用 NFS 共享上的文件的进程不再回答...希望有帮助
答案4
您可以使用这三个命令之一。请阅读man
或info
页面以获取更多信息。
正常运行时间——告知系统已运行了多长时间。
w——显示谁登录了以及他们正在做什么。
top——显示Linux进程
所有三个命令都会显示load average
信息。top
可能是最好的选择,因为它显示有关 CPU 使用率、内存使用率、优先级等的信息。
我引用一门课程的参考资料:
平均负载是给定时间段内的负载数的平均值。它考虑了以下过程:
- 在 CPU 上积极运行。
- 视为可运行,但正在等待 CPU 可用。
- 休眠:即等待某种资源(通常是 I/O)可用。
我进一步引用解释平均负载:
平均负载使用三组不同的数字显示,如下例所示:
最后一条信息是系统的平均负载。假设我们的系统是单 CPU 系统,0.25 表示在过去一分钟内,系统平均利用率为 25%。下一个位置的 0.12 表示在过去 5 分钟内,系统平均利用率为 12%;最后一个位置的 0.15 表示在过去 15 分钟内,系统平均利用率为 15%。如果我们在第二个位置看到 1.00 的值,则意味着在过去 5 分钟内,单 CPU 系统的平均利用率为 100%;如果我们想充分利用系统,这是很好的。对于单 CPU 系统,如果值超过 1.00,则意味着系统利用率过高:需要 CPU 的进程多于可用的 CPU。
如果我们有多个 CPU,比如说一个四 CPU 系统,我们会将平均负载数除以 CPU 数量。例如,在这种情况下,1 分钟的平均负载为 4.00 意味着整个系统在最后一分钟的利用率为 100% (4.00/4)。
短期增加通常不是问题。您看到的高峰可能是活动的爆发,而不是新的水平。例如,在启动时,许多进程启动,然后活动稳定下来。如果在 5 分钟和 15 分钟的平均负载中看到高峰,则可能值得关注。