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

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

昨天,我的基于 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

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

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

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

答案1

如果你有 CPU 负载图,它们可能会让你进一步了解 CPU 当时正在做什么。例如,它可能正在等待磁盘 IO,这称为等待

如果这些都不可用,而且您很难找到原因,那么此事件很可能归咎于主机服务器上的问题。也许是一个嘈杂的邻居的问题:同一主机上的虚拟机行为不当,或者硬件故障(如磁盘,这可能导致高 IOWAIT)。

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

Ps:Ubuntu 12.04 已达到使用寿命终止状态,您应该考虑升级机器,因为此版本不再提供安全更新。请参阅 Ubuntu 发布周期:https://ubuntu.com/about/release-cycle

相关内容