跳转至

Linux下 CPU使用率到90% 利用脚本立即重启PHP-FPM

制作脚本

燃气灶,饮用水,炒锅,蒸锅,煮锅,电饭锅,食用油,洗菜盆,碟子,碗,筷子,勺子,汤勺,漏勺,洗涤剂,抹布,钢丝球,菜刀,生食案板,熟食案板,削皮刀,热水壶

check-php.sh存放在 /root/shell/目录下

#!/bin/sh
#
#脚本功能描述:依据/proc/stat文件获取并计算CPU使用率
#
#CPU时间计算公式:CPU_TIME=user+system+nice+idle+iowait+irq+softirq
#CPU使用率计算公式:cpu_usage=(idle2-idle1)/(cpu2-cpu1)*100
#默认时间间隔
TIME_INTERVAL=5
time=$(date "+%Y-%m-%d %H:%M:%S")
LAST_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
LAST_SYS_IDLE=$(echo $LAST_CPU_INFO | awk '{print $4}')
LAST_TOTAL_CPU_T=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
sleep ${TIME_INTERVAL}
NEXT_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
NEXT_SYS_IDLE=$(echo $NEXT_CPU_INFO | awk '{print $4}')
NEXT_TOTAL_CPU_T=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')

#系统空闲时间
SYSTEM_IDLE=`echo ${NEXT_SYS_IDLE} ${LAST_SYS_IDLE} | awk '{print $1-$2}'`
#CPU总时间
TOTAL_TIME=`echo ${NEXT_TOTAL_CPU_T} ${LAST_TOTAL_CPU_T} | awk '{print $1-$2}'`
CPU_USAGE=`echo ${SYSTEM_IDLE} ${TOTAL_TIME} | awk '{printf "%.0f", 100-$1/$2*100}'`
CPU_LIMIT=60

if (("$CPU_LIMIT" < "$CPU_USAGE")); then
    systemctl restart php-fpm.service
    echo "CPU Usage: ${CPU_USAGE}%" $time >> /data/wwwroot/default/cpu.log
fi

启动脚本

crontab -e crontab -l

定时执行

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