无标题文档
wdCP系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用教程) wdCDN系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用手册)
wdOS系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用教程) wdDNS系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用手册)
注册 发贴 提问 回复-必看必看 wddns免费智能 DNS 开通 本地或虚拟机使 用wdcp 一键包在mysql编 译时"卡住"
【300G高防】双线 无视攻击 wdcp官方技术支持/服务 阿里云8折优惠券 无敌云 腾讯云优惠中,现注册更有260代金额券赠送
返回列表 发帖
提问三步曲: 提问先看教程/FAQ索引(wdcp,wdcp_v3,一键包)及搜索,会让你更快解决问题
1 提供详细,如系统版本,wdcp版本,软件版本等及错误的详细信息,贴上论坛或截图发论坛
2 做过哪些操作或改动设置等

温馨提示:信息不详,很可能会没人理你!论坛有教程说明的,也可能没人理!因为,你懂的

[分享] 负载高,自动重启mysql,apache

服务器总是负载高,死机。从网上找了一篇,自动重启的,但是不符合wdcp的环境路径,哪位懂得同学,给改改,复合lnamp的环境,自动重启MySQL就行,最好休眠几十秒。


========================================================================

在网上查了不少资料,弄了个脚本来监控服务器负载,超负荷 就自动重启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.com/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 你可以自定义。

没人。。。。。都是初学者啊

TOP

没人吗?一个都没有?

TOP

#!/bin/sh
# crontab: */3 * * * * /www/wdlinux/tools/loadavg_restart_apache.sh >> /var/log/restart_apache.log
/usr/sbin/ntpdate cn.pool.ntp.org  >> /var/log/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`
     service httpd 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


             service httpd start

      service wdapache 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


             service httpd start

       service wdapache start


             sleep 30


             echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l`
         fi


fi

将以上文件,保存在 /www/wdlinux/tools/loadavg_restart_apa_my.sh

然后在  

crontab -e

添加

*/3 * * * * /www/wdlinux/tools/loadavg_restart_apa_my.sh >> /var/log/restart_apa_my.log

*/3 ***** 表示3分钟,/www/wdlinux/tools/loadavg_restart_apa_my 你可以自定义。

看清提问三步曲及多看教程/FAQ索引(wdcp,v3,一键包,wdOS),益处多多.wdcp工具集 阿里云主机8折优惠码

TOP

谢谢老大。这里边就你一个高手

TOP

还是比较实用的

TOP

老大,里面的sleep 8 、sleep 30这些参数代表什么呢?

可否给改一个自动重启服务器的shell脚本呢?当超出指定的负载后,自动执行reboot的命令

麻烦老大业余时间给修改一个

TOP

老大,里面的sleep 8 、sleep 30这些参数代表什么呢?

可否给改一个自动重启服务器的shell脚本呢?当超出指定的负载后,自动执行reboot的命令

麻烦老大业余时间给修改一个

TOP

延时8,30秒
看清提问三步曲及多看教程/FAQ索引(wdcp,v3,一键包,wdOS),益处多多.wdcp工具集 阿里云主机8折优惠码

TOP

root身份登录到命令行

输入crontab -e

按下a键进入到编辑模式

输入 */3 * * * * /www/wdlinux/tools/loadavg_restart_apa_my.sh >> /var/log/restart_apa_my.log

同时按下ctrl+c退出编辑模式

按下shift+: 输入wq 退出 crontab
呼叫回拨

TOP

不知道怎么来检查有没有配置成功哈,不知道效果如何
呼叫回拨

TOP

mysql_listen.sh
#!/bin/bash
pgrep -x mysqld &> /dev/null

if [ $? -ne 0 ]

then

echo "At time: `date` :MySQL  is stop .">> /var/log/mysql_messages

service mysql start
#echo "At time: `date` :MySQL server is stop."

else

echo "MySQL server is running ."

fi


以上这个可以吗
西藏藏药浴

TOP

返回列表