php-fpmハングアップはどうやって破るの?
1954 ワード
nginx+php 7でサーバーを構築しました.要求量が大きすぎて、phpの中にまた保留中の任務があるので、php-fpmはピーク時によく死んでしまいます.php-fpmの最大プロセス数を1000に変更しました.やはり耐えられません.cpuも過負荷で、毎回手動で再起動しなければなりません.うるさいので、私はshellスクリプトを書いて、バックグラウンドでphp-fpmを監視しました.一定数に達したら再起動させ、手動再起動、ハングアップの問題を効果的に解決します.
1.文書ヘッダと定義変数の宣言
2.キー関数の定義
3.起動パラメータの追加
4.終了スクリプト
コマンドの実行
原文:https://www.linuxprobe.com/php-fpm.html
1.文書ヘッダと定義変数の宣言
#!/usr/bin/env bash
maxCount=300 #php-fpm
basePath=$(cd `dirname $0`; pwd) #
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 #
原文:https://www.linuxprobe.com/php-fpm.html