跳转至

检测Linux负载过高时重启PHP脚本

当服务器的php-fpm经常搞得负载高,又找不到的原因的时候,只能写个脚本来帮忙检查负载并重启php,这也是没办法的事情。

可以根据自己服务器的情况来决定要负载超过多少就重启php,这里只设定了负载到5就重启php

脚本内容

vi check-php-load.sh

#!/bin/sh
TOP_SYS_LOAD_NUM=1
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 php-fpm" `ps -ef | grep php-fpm | wc -l`
/usr/local/php/sbin/php-fpm stop
sleep 8
pkill php-fpm
sleep 8
for i in 1 2 3
do
if [ `pgrep php-fpm | wc -l` -le 0 ]
then
/usr/local/php/sbin/php-fpm start
sleep 30
echo "#1#" $(date +"%y-%m-%d %H:%M:%S") "start php-fpm" `ps -ef | grep php-fpm | wc -l`
fi
done
else
if [ `pgrep php-fpm | wc -l` -le 0 ]
then
/usr/local/php/sbin/php-fpm start
sleep 30
echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start php-fpm" `ps -ef | grep php-fpm | wc -l`
fi
fi

启动脚本

crontab -e crontab -l

定时执行

 */15 * * * * /usr/bin/bash /root/shell/check-php-load.sh >>/data/wwwlogs/check-php-load.log