php-fpmハングアップはどうやって破るの?

1954 ワード

nginx+php 7でサーバーを構築しました.要求量が大きすぎて、phpの中にまた保留中の任務があるので、php-fpmはピーク時によく死んでしまいます.php-fpmの最大プロセス数を1000に変更しました.やはり耐えられません.cpuも過負荷で、毎回手動で再起動しなければなりません.うるさいので、私はshellスクリプトを書いて、バックグラウンドでphp-fpmを監視しました.一定数に達したら再起動させ、手動再起動、ハングアップの問題を効果的に解決します.
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