技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Linux>正文
Linux下Web服务器CPU负载超过阀值自动重启脚本
2016年02月06日 Linux 暂无评论 ⁄ 被围观 26,381次+

说明:

操作系统: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服务,使网站恢复访问。

至此,Linux下Web服务器CPU负载超过阀值自动重启脚本教程完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2024 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接
陕ICP备11001040号-3