如何解决 CPU 占用 100% 且无响应的 Apache2 实例问题?

如何解决 CPU 占用 100% 且无响应的 Apache2 实例问题?

我正在运行 Debian 7 服务器Kolab 群件安装完毕,其他的就没什么问题了。它通常运行良好,但随机地(当然,总是在我没注意的时候)CPU 使用率会飙升到 100% 并停留在那里,Apache 将变得没有响应,我必须 kill -3 apache2.prefork。我很确定这是我做的,因为我没有发现其他人遇到与 Kolab 类似的问题。更多信息:

  • SSL 是必需的,连接到端口 80 会立即将您重定向到 SSL 站点
  • 我所说的“无响应”是指尝试访问任何页面都会处于“建立安全连接”状态,直到浏览器超时。
  • 这包括由 mod_status 制作的页面,因此给出的解决方案这个问题不管用
  • 日志中没有写入任何内容。它按照通常的方式设置,有 access.log、error.log 和 other_vhosts_access.log,它们都是空的。最新的内容是前一天滚动的日志,只显示正常使用,没有任何可疑内容
  • 似乎没有人连接它,所以我怀疑它是否超载了
  • 它运行在虚拟机上。最初虚拟机只有一个 CPU,所以我想这可能是瓶颈,所以又加了一个 CPU。然而,这种情况仍然会发生,但有趣的是,这种情况只会激增CPU 的使用率达到 100%,据我所知,这表明它很可能是某种无限循环。
  • 服务器上其他所有不与 Apache 交互的部分仍可正常工作。
  • 我编写了一个小型 cron 作业来检查 CPU 使用率,并在 CPU 使用率达到峰值时通过电子邮件通知我,这意味着我能够在几分钟后捕获到它的发生,但我仍然无法在日志(包括系统日志)中找到任何可以表明原因的内容。
  • 它似乎不是周期性的,它发生在一天中的不同时间,当人们使用它时或当它空闲时。我找不到与峰值相对应的 cron 作业。

我想,如果我知道一种方法来查看 PHP 正在运行什么,而无需使用 HTTP(S) 或使用调试符号编译 PHP,那么我自己可能就能找到答案。有人知道怎么做吗?

相关内容