我们有一个非常高的负载和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使用情况?