如何调查持续数小时的 100% CPU 事件的原因?

tho*_*ter 9 cpu-usage

昨天我的基于 Xen 的 VPS 服务器上的 CPU 在两个小时内达到 100%,然后恢复正常,似乎很自然。

我检查了包括 syslog、auth.log 等在内的日志,似乎没有任何异常。

  • 在此期间,服务器似乎运行正常,如人们登录、收到的电子邮件等所示
  • 在此期间内存、磁盘和网络使用情况似乎正常。
  • 我已经好几个星期没有重新启动服务器了,那天早上我也没有在做这件事。
  • 我会使用安全更新等来更新它。这是 12.04 LTS。
  • 它运行 nginx、mysql 和 postfix 以及其他一些东西。

在事件系统日志的开始处包含以下条目:

Apr 27 07:55:34 ace kernel: [3791215.833595] [UFW LIMIT BLOCK] IN=eth0 OUT= MAC=___ SRC=209.126.230.73
 DST=___ LEN=40 TOS=0x00 PREC=0x00 TTL=244 ID=2962 PROTO=TCP SPT=49299 DPT=465 WINDOW=1024 RES=0x00 SYN URGP=0
Apr 27 07:55:34 ace dovecot: pop3-login: Disconnected (no auth attempts): rip=209.126.230.73, lip=___
Apr 27 07:55:34 ace kernel: [3791216.012828] [UFW LIMIT BLOCK] IN=eth0 OUT= MAC=___ SRC=209.126.230.73
 DST=___ LEN=40 TOS=0x00 PREC=0x00 TTL=244 ID=58312 PROTO=TCP SPT=49299 DPT=25 WINDOW=1024 RES=0x00 SYN URGP=0
Apr 27 07:55:34 ace kernel: [3791216.133155] [UFW LIMIT BLOCK] IN=eth0 OUT= MAC=___ SRC=209.126.230.73
 DST=___ LEN=76 TOS=0x00 PREC=0x00 TTL=244 ID=63315 PROTO=UDP SPT=49299 DPT=123 LEN=56
Run Code Online (Sandbox Code Playgroud)

但话又说回来,我一直得到这些。它只是表明 UFW/iptables 成功阻止了一些不需要的连接。应该没有关系。

我有一个每日备份,在此“事件”开始前不到 2 小时运行。尽管它确实导致了比正常情况更高的服务器负载(但不是 CPU 利用率),但它似乎运行正常,这表明可能存在 I/O 拥塞问题。但这并不与 100% CPU 事件同时发生。

我的问题是:如果过去发生的此类事件不再发生,我该如何调查其原因?

小智 1

如果您有可用的 CPU 负载图,它们可能会进一步了解 CPU 此时的运行情况。例如,它可能一直在等待磁盘 IO,这称为IOWAIT

如果这些不可用并且您很难找到原因,则此事件很可能归因于主机服务器上的问题。也许是与吵闹的邻居有关的问题:同一主机上的虚拟机行为不当,或者硬件故障(例如磁盘,这可能会导致高 IOWAIT)。

有一个名为 atop 的实用程序,它将保留您的流程的详细记录,并会在此处显示答案。atop 将每隔 xx 分钟(可配置)制作一个所有进程和资源使用情况的“快照”。现在这对你没有帮助,但如果这种情况再次发生,会对你有帮助。请参阅 atop 网站了解更多信息: https: //www.atoptool.nl/

PS Ubuntu 12.04 已达到生命周期结束状态,您应该考虑升级计算机,因为该版本没有更多可用的安全更新。请参阅 Ubuntu 发布周期: https: //ubuntu.com/about/release-cycle