php-fpm死機解決辦法,腳本後臺自動重啓

本人用nginx+php7搭建了一臺服務器,由於請求量太大,並且php裏面又有掛起的任務,致使php-fpm在高峯期的時候常常死掉,吧php-fpm的最大進程數已經改到1000了,仍是吃不消,cpu也是超負荷,每次都要手動重啓,太煩人,所以本人寫了一個shell腳本,後臺監聽php-fpm,等達到必定數量讓他重啓,這樣就有效的解決了手動重啓,死機問題了。php

1.聲明文檔頭跟定義變量nginx

#!/usr/bin/env bashweb

maxCount=300 #php-fpm最大進程數shell

basePath=$(cd `dirname $0`; pwd) #腳本所在目錄bash

pidFilePath="$basePath/pid.conf" #pid存放文件服務器

errorFilePath="$basePath/error.txt" #錯誤日誌存放文件php7

2.定義關鍵函數函數

getDateTime(){php-fpm

    date "+%Y-%m-%d %H:%M:%S"rest

}

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 #中止監聽

完整腳本下載在qq羣裏面:羣號490328630

相關文章
相關標籤/搜索