疯狂的DEDE,数据太大导致生成负载压力增大,也没办法分表,采用的自动更新\自动生成,偶尔会造成VPS负载很搞,然后挂掉...
于是想到一个好办法...看代码:- #!/bin/sh
- TOP_SYS_LOAD_NUM=10
- 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 mysql" `ps -ef | grep mysql | wc -l`
- /etc/init.d/mysql stop
- sleep 8
- pkill mysql
- sleep 8
- for i in 1 2 3
- do
- if [ `pgrep mysql | wc -l` -le 0 ]
- then
- /etc/init.d/mysql start
- sleep 30
- echo "#1#" $(date +"%y-%m-%d %H:%M:%S") "start mysql" `ps -ef | grep mysql | wc -l`
- fi
- done
- else
- if [ `pgrep mysql | wc -l` -le 0 ]
- then
- /etc/init.d/mysql start
- sleep 30
- echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start mysql" `ps -ef | grep mysql | wc -l`
- fi
- fi
复制代码 这个是当系统负载达到10就自动重新启动MYSQL,你完全可以任意变通,比如重新启动PHP\NGINX\APACHE等等...好像可以解决下502问题,负载高的时候自动重新启动下php未尝不可...根据自己需要任意弄!
然后加个定时运行:- */3 * * * * /home/wwwroot/kmysql.sh >>/home/wwwroot/kmysql.log
复制代码 你保存什么NAME这里写什么NAME,这个是3分钟检测一次!
应该完成了,如果你运行脚本出现:
: line 6: bc: command not found
: line 6: [: -eq: unary operator expected
表示没有bc命令,centos可以用 yum -y install bc 安装它 ....
OK完工....再也不怕VPS半夜DEDE自动更新的时候生成HTML导致MYSQL压力系统负载过高而挂掉... |