我正在尝试解决服务器上的一些问题,我的 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 中。