使用 monit 重新启动 apache

使用 monit 重新启动 apache

我正在尝试解决服务器上的一些问题,我的 CPU 使用率每隔一天就会达到 100%。这导致我的所有网站和 http 服务都失败了。

当我的 CPU 达到 100% 并持续 10 个周期时,如何配置 monit 来重新启动 httpd 服务?

我对 Linux 和 Centos 还不熟悉。我一直在学习相关知识,也尝试研究了一段时间,但还是找不到合适的答案。

感谢您的关注

更新

感谢您的回复。当 CPU 以 100% 运行时,我运行了 top 命令,我可以看到用户 nobody 在 httpd 服务上消耗了所有资源。我有几个使用 php 脚本的应用程序,但它们的错误日志似乎都很好。

我怀疑某个特定的 wordpress 主题由于更新网站时出现循环而导致此错误。这个特定的网站还向我显示环回测试失败错误,而同一服务器上的所有其他 wordpress 网站都运行良好。

因此,在我找到罪魁祸首之前,我只想在 CPU 利用率达到 95% 并持续 10 个周期时重新启动服务 httpd。

我希望这足够清楚,以便有人能好心地给我一个解决方案。

答案1

当我的 CPU 达到 100% 并持续 10 个周期时,如何配置 monit 来重新启动 httpd 服务?

我将在 Monit 中使用此行来获取您正在寻找的内容:

if cpu > 100% for 10 cycles then restart

总的来说它看起来像这样:

check process httpd with pidfile /path/to/your/pid
    group mail
    start program = "/etc/init.d/httpd start"
    stop program = "/etc/init.d/httpd stop"
    if cpu > 100% for 10 cycles then restart

虽然这应该按照您的要求进行,但我不确定这是否会给您带来您想要的结果,因为 Apache 可能同时运行多个进程。

对于您的 Wordpress 问题,Wordpress Query Monitor 可能会帮助您找到罪魁祸首。

答案2

当我的 CPU 达到 100% 并持续 10 个周期时,如何配置 monit 来重新启动 httpd 服务?

这导致我的所有网站和 http 服务失败。

可能使用

check process apache with pidfile /path/to/pid
    start "/sbin/service/apache2 start"
    stop  "/sbin/service/apache2 stop"
    if failed host 127.0.0.1 port 80
        for 10 cycles
    then restart

当然,还会有更多信息M/Monit 维基百科

答案3

您提供的有关堆栈和问题的信息非常少。您甚至没有提供哪个服务/应用程序占用了 100% CPU 的信息。如果您甚至在考虑在 CPU 达到 100% 时重新启动 httpd 也不是解决方案,这是愚蠢的。

使用类似的实用程序顶部iotop特区弄清楚什么在使用资源。但根据我看到的情况,我的猜测是mod_php在 httpd 中。

相关内容