在 linux 下使用很少 cpu 的高平均负载的通常解释是 IO 过多(或更恰当地说是不间断的 sleep)。
我有一个服务在 2 核 VM 集群上运行,该集群表现出适度的 CPU 使用率(~55-70% 空闲),但高于 2 平均负载,同时体验接近零的 IO、适度的上下文切换和无交换。轮询ps
我从未D
在进程状态列中看到。
该服务是在 unicorn 下运行的 ruby 1.9。它连接到两个上游 postgres 数据库,这些数据库提供非常快的 avg 语句执行(~0.5ms)。该服务记录的已用请求持续时间大约是它在我们的性能测试网络上更高压力负载下所显示的两倍。唯一看起来不正常的监控信号是平均负载(当然还有平均响应持续时间),其他一切(cpu、内存、io、网络、cswitch、intr)都是标称和匹配的预测。
系统是 Ubuntu 10.04.4 LTS“Lucid”。uname 是Linux dirsvc0 2.6.32-32-server #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011 x86_64 GNU/Linux
. 管理程序是 VMWare ESX 5.1。
更新:@ewwhite 要求的更多信息。存储是映射到连接到 NetApp 的 vm 主机上的 NFS 装载的虚拟磁盘设备。我要指出的是,所有迹象都表明没有发生重大的磁盘 IO。该服务读取和写入网络套接字(~200KB/s)并进行普通访问和错误记录(速度约为 20KB/s)。vm 主机有一对千兆端口,连接到两个顶部机架交换机,每个交换机都将四个千兆端口绑定回核心路由器,全是铜线。每个 vm 主机具有 24 (4x6) 个物理内核和 150GB 内存,通常托管大约 30 个运行各种不同服务的类似大小的 vm 来宾。在生产中,这些主机永远不会在内存上过度使用,而只是在 cpu …
我在我的一台服务器上遇到了一个奇怪的问题。这是在具有一个专用 CPU 内核的 KVM VPS 上。
但是,在此期间 CPU 使用率实际上并没有增加,这也排除了 iowait 是原因:
它发生时似乎是周期性的(例如,在此图中,它大约每 20-25 分钟发生一次)。我怀疑有一个 cronjob,但我没有任何每 20 分钟运行一次的 cronjob。我也试过禁用我的 cronjobs 并且负载峰值仍然发生。
当 SSH 进入服务器时,我设法实际看到了这种情况……它的负载为 1.88,但 CPU 空闲率为 94%,iowait 为 0%(这可能是我预期的原因)
发生这种情况时,似乎没有很多磁盘 I/O。
我难住了。有任何想法吗?
我正在监控一个 Cpanel (centos) 服务器,它有一个 2 核 CPU(4 个虚拟 CPU 核),它似乎过载了,因为我使用top
以下方法获得了这个值:
load average: 11.80, 13.30, 13.02
Cpu(s): 42.2%us, 11.7%sy, 0.0%ni, 35.6%id, 10.1%wa, 0.1%hi, 0.3%si, 0.0%st
Run Code Online (Sandbox Code Playgroud)
但是,如果我查看过程列表(使用 top 或 ps),则没有过程使用超过 1%
此外,进程 CPU 使用率 (%) 的总和等于 4,如果我什至假设 0% 值是四舍五入的数字,并将其更改为 0.04(使用 1 个十进制数字四舍五入为 0),则总和为 11(仍然小于100%)。
我如何正确解释这些数据?是否有一些隐藏的过程使我的 CPU 过载。