centos/linux负载过高自动重启apache,mysql的脚本,保护vps不因超负荷死机

发布时间:2011年12月31日 / 分类:服务器经验 / 13,131 次围观 / 14 次吐槽

近来,博客服务器vps老是挂,

在网上查了不少资料,弄了个脚本来监控服务器负载,超负荷 就自动重启apache,mysql的脚本,

适用于centos系统,和自带apache 和mysql,自定义编译安装的可能需要稍作调整。

linux时间也是个问题,此脚本也添加了连接时间服务器同步校对时间。

/usr/sbin/ntpdate cn.pool.ntp.org  >> /backup/gaige/upClock.log 2>&1  && /sbin/hwclock -w

现在分享给大家:

需要用的朋友,可以在你的终端,运行一下代码,就会自动装到你的服务器。
wget  http://www.xiangguoqi.cn/cmd/restart_apa_my_by_load.sh;    sh restart_apa_my_by_load.sh

  装好后自动脚本和运行日志会在您服务器 /backup/gaige/ 下边,你可以自行调整。

默认自动是3分钟,你可以自行 crontab -e 修改

*/3 * * * * /backup/gaige/loadavg_restart_apache.sh >> /backup/gaige/restart_apache.log

-------------------

手动安装脚本如下:

把以下代码为sh脚本

#!/bin/sh
# crontab: */3 * * * * /backup/gaige/loadavg_restart_apache.sh >> /backup/gaige/restart_apache.log
/usr/sbin/ntpdate cn.pool.ntp.org  >> /backup/gaige/upClock.log 2>&1  && /sbin/hwclock -w
    sync
 sync
 echo 3 > /proc/sys/vm/drop_caches
TOP_SYS_LOAD_NUM=5
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 
    sync
    echo "#0#" $(date +"%y-%m-%d %H:%M:%S") "pkill httpd" `ps -ef | grep httpd | wc -l`
 echo "#0#" $(date +"%y-%m-%d %H:%M:%S") "pkill mysqld" `ps -ef | grep mysqld | wc -l` 
    /usr/sbin/apachectl stop
 service mysqld stop
    sleep 8
    pkill httpd 
 pkill mysqld
 
    sleep 8 
    for i in 1 2 3 
    do 
 if [ `pgrep mysqld | wc -l` -le 0 ] 
        then 
      /sbin/service mysqld start        
   
            sleep 30 
   echo "#1#" $(date +"%y-%m-%d %H:%M:%S") "start mysqld" `ps -ef | grep mysqld | wc -l`
           
        fi 
  
        if [ `pgrep httpd | wc -l` -le 0 ] 
        then 
     
            /usr/sbin/apachectl start
   
            sleep 30 
   
            echo "#1#" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l` 
        fi 
  
    done 
else 
   if [ `pgrep mysqld | wc -l` -le 0 ] 
        then 
      /sbin/service mysqld start         
   
            sleep 30 
   echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start mysqld" `ps -ef | grep mysqld | wc -l`
           
        fi 
  
        if [ `pgrep httpd | wc -l` -le 0 ] 
        then 
     
            /usr/sbin/apachectl start
   
            sleep 30 
   
            echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l` 
        fi 
  
fi

然后在  

crontab -e

添加

*/3 * * * * /backup/gaige/loadavg_restart_apa_my.sh >> /backup/gaige/restart_apa_my.log

*/3 ***** 表示3分钟,/backup/gaige/loadavg_restart_apa_my 你可以自定义。

标签:mysql, apache, 负载, 死机

赞 (0) 本文链接: http://www.xiangguoqi.cn/read/530.html [复制分享 ](转载时请保留 )



↑上一篇:2011电子商务冰火两重天 “剩者为王”中小网站遭洗牌
↓下一篇:Advanced Office Password Recovery V4.11┊找回Office 密码 无觅关联推荐,快速提升流量
评论已关闭
已有 14 条评论
  1. 每天路过,打打酱油希望能够认识博主!

  2. 技术。真是一点不懂的了。要学习学习才行。
    元旦快乐。向同学。我5组的。哈哈

    1. gaige

      @晨亮博客 哈哈,知道了。

  3. 找了半天,终于找到了。
    很高兴能够认识博主,希望能够回访一下!

  4. www.chaojishop.com

    永远支持博主。

  5. 又来拜访了,希望能够回访一下!

  6. 来顶博主了,新年快乐哦!
    辛卯年(兔)腊月廿二 2012-1-15

  7. 新年快乐!!!

  8. 天增岁月人增寿,春满乾坤福满门;一家和气又喜气,美满幸福和团圆。除夕的钟声敲响了,新的一年到来了,朋友,祝你和家人新年快乐,幸福美满!辛卯年(兔)腊月廿六 2012-1-19

  9. 学习下,谢谢博主

  10. 给博主来拜年了,新年快乐,记得回访哦!

  11. 蓝鹰

    这样不停止的重启,好象对网站还是有影响的吧,

    1. gaige

      @蓝鹰 确实有影响,是个指标不治本的方法,如果实在卡了,要分析是程序原因,或者增加硬件。

      1. 蓝鹰

        我现在也是为这个发愁呀,

热评文章
猜你喜欢
文章分类
最新文章
最近回复
    岁月痕迹