百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> CentOS下Web服务器CPU负载超过阀值自动重启shell脚本
分享文章到:

CentOS下Web服务器CPU负载超过阀值自动重启shell脚本

发布时间:01/15 来源: 浏览: 关键词:
Web服务器CPU负载超过阀值自动重启脚本了这种做法非常的好对于小网站小编觉得用处非常的大了,下面来看一下这段代码,希望文章能够帮助到各位朋友。

说明:
 
操作系统:CentOS
 
web服务器:apache
 
问题:
 
搜索引擎的爬虫导致网站在某一段时间内访问量剧增,服务器压力过大,网站访问超时、页面无法打开。
 
解决办法:
 
定时监控服务器负载,超过一定阀值后,自动重启web服务。
 
apache安装目录:/usr/local/apache
 
脚本运行日志文件:/usr/local/apache/check_cpu_load.log
 
脚本存放目录:/home/crontab
 
cd /home/crontab
 
vi check_cpu_load.sh #编辑,添加以下代码
 
#!/bin/sh
 
#crontab: */5 * * * * /home/crontab/check_cpu_load.sh >> /usr/local/apache/check_cpu_load.log
 
TOP_SYS_LOAD_NUM=3
 
SYS_LOAD_NUM=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`
 
echo $(date +"%y-%m-%d") `uptime`
 
if [ `echo "$TOP_SYS_LOAD_NUM < $SYS_LOAD_NUM"|bc` -eq 1 ]
 
then
 
echo "#0#" $(date +"%y-%m-%d %H:%M:%S") "pkill httpd" `ps -ef | grep httpd | wc -l` >> /usr/local/apache/check_cpu_load.log
 
/usr/local/apache/bin/apachectl stop
 
sleep 5
 
pkill httpd
 
sleep 5
 
for i in 1 2 3
 
do
 
if [ `pgrep httpd | wc -l` -le 0 ]
 
then
 
/usr/local/apache/bin/apachectl start
 
sleep 30
 
echo "#1#" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l` >> /usr/local/apache/check_cpu_load.log
 
fi
 
done
 
else
 
if [ `pgrep httpd | wc -l` -le 0 ]
 
then
 
/usr/local/apache/bin/apachectl start
 
sleep 30
 
echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l` >> /usr/local/apache/check_cpu_load.log
 
fi
 
fi
 
:wq! #保存退出
 
crontab -e #添加计划任务
 
*/5 * * * * /home/crontab/check_cpu_load.sh >> /usr/local/apache/check_cpu_load.log
 
:wq! #保存退出
 
service crond restart #重启计划任务
 
通过以上设置后,当服务器负载超过3时,在5分钟内会自动运行脚本,重启apache服务,使网站恢复访问

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有5人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板