51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

php-fpm死机怎么破

用nginx+php7搭建了一台服务器,因为请求量太大,而且php里面又有挂起的任务,导致php-fpm在高峰期的时候经常死掉, 把php-fpm的最大进程数已经改到1000了,还是吃不消,cpu也是超负荷,每次都要手动重启,太烦人,因此本人写了一个shell脚本,后台监听php-fpm,等达到一定数量让他重启,这样就有效的解决了手动重启,死机问题了。
1.声明文档头跟定义变量

#!/usr/bin/env bash
maxCount=300 #php-fpm最大进程数
basePath=$(cd `dirname $0`; pwd) #https://www.linuxcool.com/所在目录
pidFilePath="$basePath/pid.conf" #pid存放文件
errorFilePath="$basePath/error.txt" #错误日志存放文件

2.定义关键函数

getDateTime(){
`date "+%Y-%m-%d %H:%M:%S"
`
}

restart(){
kill-USR2$(cat /usr/local/php/var/run/php-fpm.pid)

}

start(){
/usr/local/php/sbin/php-fpm

}

stop(){
kill $(cat /usr/local/php/var/run/php-fpm.pid)

}

stopweb(){

if [ -f "$pidFilePath" ];then

kill $(cat "$pidFilePath")2>/dev/null

rm -r "$pidFilePath"

fi

}

main(){

stopweb

echo "$$">>"$pidFilePath"

while((1))

do

    count=$(ps aux | grep -c php-fpm)

    if (("$count">="$maxCount"));then

        restart

        date=$(getDateTime)

        echo "date:$date,maxCount:$maxCount,count:$count">>"$errorFilePath"

    fi

    sleep 10

done

}

3.加入启动参数

case $1 in
`"restart") restart

;;

"start") start

;;

"stop") stop

;;

"run") main

;;

"stopweb") stopweb

;;

*) echo "cmd error!"

;; ` esac


4.终止脚本

exit 0

运行命令

./webserver restart #重启php-fpm
./webserver start #开启php-fpm
./webserver stop #停止php-fpm
setsid ./webserver run & #开启监听,后台运行&
./webserver stopweb #停止监听

原文来自:http://www.centoscn.com/shell/2017/0228/8558.html

本文地址:https://www.linuxprobe.com/php-fpm.html编辑:何云艳,审核员:逄增宝

本文原创地址:https://www.linuxprobe.com/php-fpm.html编辑:向云艳,审核员:暂无

赞(0)
未经允许不得转载:工具盒子 » php-fpm死机怎么破