CPU负载高,但顶级进程在0%左右,

我们有一个非常高的负载和CPU利用率的服务器,但我们无法弄清楚为什么。 当我们运行顶级的所有特效似乎是非常低的CPU。

http://cl.ly/2d1g0K3q261r0R0K3e35

有没有更好的方法来寻找是什么原因造成的?

我认为这个错误是你的情况。 从输出结果看,你有足够的内存(注意caching14 GB左右),没有I / O问题,但是你有xen相关的进程在运行。 这让我觉得这是一个错误。

负载是衡量一个系统在1分钟,5分钟和15分钟的基础上的工作量。

最常见的误解是Load Average纯粹连接到系统的CPU使用情况。
然而,负载并入额外的测量,例如CPU等待I / O,我认为这是您的问题。

基于这个图像,我猜你已经耗尽了内存,开始将数据交换到磁盘。

一个简单的free -m会告诉你有多less内存和交换使用。
有趣的列是除了-/+ buffers/cache之外的空闲列。
如果接近于零,则表示内存已用尽,并应采取相应措施。

注意到负载平均值相当高(68,哇)。 有可能是有很多进程占用一点点的CPU,因此加起来耗费所有的CPU时间? 也许,这些过程只是开始和结束,因此顶部不能捕捉到它们的存在,你可以试着看看是否能看到。

尝试

 iotop 

IO大部分时间对我来说都是这样。

尝试使用:

 top -o cpu 

-o标志将强制顶部以CPU使用率降序排列进程。

它可能被locking在nfs上的文件或其他locking另一个进程需要访问的文件的东西

也可能错过configuration的服务,活动的线程太多

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

也可以看看

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

'htop'进程和线程的cpu使用情况?