等系统负载过高的情况下,直接重启Apache

最近半年碰到了几次,由于“蜘蛛”导致机器挂掉了,所以想出了这个方法,等系统负载过高的情况下,直接重启Apache。这就是Twitter提倡的那样,等进程杀死你之前,你先杀死他(原话不记得了) 。其实这种方法早就在业界使用了。
来吧,看看我写的脚本。
checkload.sh

Shell代码 复制代码
  1. #!/bin/sh   
  2. TOP_SYS_LOAD_NUM=5  
  3. SYS_LOAD_NUM=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`   
  4.   
  5. echo $(date +"%y-%m-%d") `uptime`   
  6. if [ `echo "$TOP_SYS_LOAD_NUM < $SYS_LOAD_NUM"|bc` -eq 1 ]   
  7. then   
  8.     echo "##" $(date +"%y-%m-%d %H:%M:%S""pkill httpd" `ps -ef | grep httpd | wc -l`   
  9.     pkill httpd   
  10.     sleep 10  
  11.     for i in 1 2 3  
  12.     do   
  13.         if [ `pgrep httpd | wc -l` -le 0 ]   
  14.         then   
  15.             /home/app/httpd/bin/apachectl start   
  16.             sleep 30  
  17.             echo "##" $(date +"%y-%m-%d %H:%M:%S""start httpd" `ps -ef | grep httpd | wc -l`   
  18.         fi   
  19.     done   
  20. else   
  21.     if [ `pgrep httpd | wc -l` -le 0 ]   
  22.     then   
  23.         /home/app/httpd/bin/apachectl start   
  24.         sleep 30  
  25.         echo "##" $(date +"%y-%m-%d %H:%M:%S""start httpd" `ps -ef | grep httpd | wc -l`   
  26.     fi   
  27. fi   

然后在crontab里增加定时执行的命令

*/2 * * * * (/root/checkload.sh >>/root/checkload.log)

每两分钟检查一次系统负载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值