高CPU负载,但顶部进程数最多为0%


11

我们有一台服务器具有异常高的负载和cpu util,但我们不知道为什么。当我们运行最高时,所有进程的CPU似乎都非常低。

http://cl.ly/2d1g0K3q261r0R0K3e35

有没有更好的方法来查找导致此问题的原因?


我要指出,我在Ubuntu 10.04

Answers:


4

我认为这个错误是您的情况。从输出中可以看到,您有足够的内存(请注意缓存的14 GB左右),没有I / O问题,但是您正在运行与xen相关的进程。这使我认为这是一个错误。


它原来是在Ubuntu 10.04和错误,AWS使用的硬件

7

负载是对系统在1分钟,5分钟和15分钟内的工作量的度量。

最常见的误解是平均负载纯粹与系统的CPU使用率有关。
但是,负载确实包含其他度量,例如CPU等待I / O,我认为这是您的问题。

根据图像,我猜测您的内存不足并开始将数据交换到磁盘。

一个简单的free -m告诉您使用了多少RAM和交换空间。
有趣的列是除之外的免费列-/+ buffers/cache
如果接近零,则说明RAM用完了,应该采取相应的措施。


1
+1交换。您可以使用iotopvmstat尝试查看它是否为I / O。
Axel Knauf

1
- / +缓冲区/缓存:2933 14586

4

注意平均负载相当高(68,哇)。是否可能有很多进程占用一点CPU,从而累加了所有CPU时间?也许这些过程只是很快开始和完成,因此top无法捕获它们的存在,您可以尝试查看atop是否可以看到它们。



2

尝试使用:

top -o cpu

-o标志将强制top根据CPU使用率以降序对进程进行排序。


当我跑top -o cpu我得到了“顶:未知参数‘O’”

好的,尝试运行top并o在运行时点击。它应该要求您提供主键。键入cpu并按Enter键。
强盗

1
即使按cpu排序,在列表的顶部也不会超过1%,并且在任何给定时间只有极少数(2-3)。其余均为0%

至少在Centos 7.2上,执行此操作的正确命令是top -o %CPU
Siliconrockstar '16

2

它可能是nfs上的锁定文件,也可能是其他文件锁定了另一个进程需要访问的文件

也可能会丢失活动过多线程的已配置服务


0

看起来CPU使用率来自线程。top似乎没有考虑到这一点。我最近在mysql服务器上看到了这个。有正在运行的INSERT语句,但是我无法使用SELECT获取新行,因为mysqld的某个线程正在更新表索引。顶部显示了一个内核上100%的用户负载,但是包括mysqld在内的每个进程都是0.0%的CPU。小时后,相同的SELECT提供了预期的结果集。

也可以看看

获取每个线程的CPU统计信息

'htop'进程和线程的CPU使用率?

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.