如果不是高CPU使用率,我如何分辨哪些进程导致高负载?


12

有时,我的服务器在“顶级”程序中会显示较高的平均负载(例如,四核计算机上的负载约为10),但是实际的CPU使用率并不是特别高。

我认为问题在于正在运行许多I / O密集型作业。如果顶部的“%CPU”值不是那么高,是否有任何简便的方法来识别导致负载的这些作业?


您可以粘贴运行top命令时看到的摘要区域吗?
mfriedman

Answers:


7

iostat可以报​​告这样的统计信息。通常包含在您的发行版中的sysstat软件包中。

dstat也许也值得一看,它是现代的替代品。


+1,因为iostat这将是我的答案。
埃妮,


4

要查找造成高负载的原因,您可以检查几件事。

  • vmstat -w 将向您显示ovierwiem(进程,交换,mem,cpu,io,系统)
  • pmstat -P ALL 将为您提供每个cpu内核的统计信息(包含%iowait)
  • iostat -x 寻找高%util或长时间等待或较大的平均队列大小
    • 深入挖掘 iotop
  • ps -ax 寻找状态D,该状态是不间断的睡眠(通常是IO),再运行一次,检查它们是否仍处于D状态
    • 用strace深入挖掘
    • 使用lsof和netstat检查这些进程的文件和连接
  • sar / sysstat-使用该工具,您不仅可以浏览“现在”统计信息,还可以检查在昨天午夜发生的事情
    • sar -b -整体io活动
    • sar -d -单个块设备io活动
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.