所以...我发现我们的电子邮件服务器出现了一些非常奇怪的负载问题。它在早上 8-9 点左右开始飙升(巧合的是,那时人们开始工作),但在 11 点左右下降。CPU 使用率保持正常,我有足够的可用内存,没有交换。昨天我们的 iowait% 非常高(49.75),负载也非常高(40),今天我们的负载“只有”11-12,iowait% 在 3-4 之间。
所有迹象都表明 imapd 是罪魁祸首(courier-imap),因为当我停止它时,负载突然开始降低,并且在 2-3 分钟内恢复正常。我确实有大约 40-60 个正在运行。我们使用 thunderbird,每个打开 5 个连接,我在大多数工作站上将其降低到 1 个,这有点帮助(负载下降到 5-7),然后...整个服务器在上午 11 点左右恢复正常。
我仍有大约 30 个 imapd 正在运行,但负载完全正常(介于 0.2 和 0.4 之间)。所以……我真的不明白为什么会发生这种情况,因为从逻辑上讲,如果这是问题的原因,负载应该更高。
这是具有 1GB 内存的 Linode 1080 VPS。
(chkrootkit / rkhunter 没有发现任何异常。)
答案1
如果您正在使用 VPS,您将与 VPS 不可见的其他用户共享 IO 带宽、CPU 时间和内存带宽。
我可以自信地说,物理机上托管的另一个 domU 正在消耗大量一种或多种资源(很可能是 IO)。
如果您使用,iostat -x
您可能会发现您的服务时间波动很大,这将解释为什么您的平均负载会激增,因为进程在磁盘 IO 上阻塞。
答案2
据我所知,*nix 系统上的负载意味着“等待运行的进程数”。这并不一定意味着它们正在等待 CPU。它们可能是在等待磁盘访问,或者等待网络连接完成。
例如,我曾经管理过一个系统,负载开始飙升至 80 以上,偶尔会导致系统运行缓慢。最终是因为外部 LDAP 服务器出现故障,本地系统正在向该服务器发送客户端身份验证请求。
如果您的 CPU 和 iowait 看起来正常,我会寻找您的应用程序的网络依赖性作为导致异常高负载读数的可能原因。
答案3
就像第一个发帖人指出的那样,这很可能是 IO。实际上,我的 vserver 上也有同样的设置,而且经常看到同样的问题。问题是,像 vserver 这样的虚拟服务器的当前容器方法不能有效地分离 IO。如果您有兴趣,这里有一份白皮书,第 13 页对此进行了深入解释。http://www.cs.princeton.edu/~mef/research/vserver/paper.pdf