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) #脚本所在目录

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 #停止监听

完整脚本下载在qq群里面:群号490328630

时间: 2024-12-25 13:40:51

php-fpm死机解决办法,脚本后台自动重启的相关文章

解决windows 10关机自动重启的问题

自从windows 10推出来没多久,就给台式机安装了.可是,有点悲剧的是:每次关机,都会自动重启(restart). 之后也在网上找了一些解决方式,但还是没用.前天通过搜索”Windows 10 cannot be shutdown and restart instead"最终找到一则有效的解决方案. 本解决方案是: 1.进入 Device Manager) 2.选择 Network Adapters 3.选中 网卡,我这里是: Broadcom NetXtreme Gigabit Ether

win10系统不能ping通vmware虚假机解决办法

在使用vmware安装虚拟机后,在虚拟机里面可以上网,但就是不能在宿主机通过远程连接工具连接 同时也不能ping通虚拟机 检查网络配置 查看网关 在宿主机打开 ip地址填写刚刚查看的网关,同时把子网掩码填上 试ping 一下 可以看到Ping通了虚拟机了 原文地址:https://www.cnblogs.com/braveym/p/12013294.html

Android 启动问题——黑屏 死机 解决方法

今天用了下Android Studio,出现了一些问题,现在将启动过程中遇到的问题和解决方案列出来,方便大家参考. 安装过程不多说,网上一搜一大把. 那直接说问题吧: 1. 无法启动,报错:Failed to allocate memory: 8This application has requested the Runtime to terminate it in an unusual way.Please contact the application's support team for

HttpWebRequest的GetResponse或GetRequestStream超时 + 各种超时死掉的可能和相应的解决办法

用C#模拟网页登陆,其中去请求几个页面,会发起对应的http的请求request,其中keepAlive设置为true,提交请求后,然后会有对应的response: resp = (HttpWebResponse)req.GetResponse(); 之前的多次调试,一直都是可以正常获得对应的response,然后读取html页面的. 但是后来几次的调试,在没有改变代码的前提下,结果GetResponse却始终会超时死掉. 1.默认request的timeout是1000000毫秒=100秒,都

(转载)HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法

原文链接:http://www.crifan.com/fixed_problem_sometime_httpwebrequest_getresponse_timeout/ [问题] 用C#模拟网页登陆,其中去请求几个页面,会发起对应的http的请求request,其中keepAlive设置为true,提交请求后,然后会有对应的response: resp = (HttpWebResponse)req.GetResponse(); 之前的多次调试,一直都是可以正常获得对应的response,然后读

HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法

[问题] 用C#模拟网页登陆,其中去请求几个页面,会发起对应的http的请求request,其中keepAlive设置为true,提交请求后,然后会有对应的response: resp = (HttpWebResponse)req.GetResponse(); 之前的多次调试,一直都是可以正常获得对应的response,然后读取html页面的. 但是后来几次的调试,在没有改变代码的前提下,结果GetResponse却始终会超时死掉. [解决过程] 1.默认request的timeout是1000

【转载】HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法

[问题] 用C#模拟网页登陆,其中去请求几个页面,会发起对应的http的请求request,其中keepAlive设置为true,提交请求后,然后会有对应的response: resp = (HttpWebResponse)req.GetResponse(); 之前的多次调试,一直都是可以正常获得对应的response,然后读取html页面的. 但是后来几次的调试,在没有改变代码的前提下,结果GetResponse却始终会超时死掉. [解决过程] 1.默认request的timeout是1000

手机死机后丢失的文件如何找回

要说现在的手机还真是方便,我们可以在手机上进行文档编辑了,虽然还是没有在电脑上操作来的简便,但出门在外的时候还是用手机的多.最近我也在出差,在拜访客户的时候收到总部来的一份文件让我填写之后发回去.这本身也是件小事,我就在手机上进行了操作.可能是手机用了好几天没有进行过休息,在我正要保存文件的时候突然就死机了,没办法我只好重启了,但重启后那份填写好的文件就不见了. 这份文件总部要的还是非常急的,所以我也必须要尽快想办法才行.回到宾馆,打开电脑想重新接收文件再填一次的时候,发现上面很多都是客户信息,

Eclipse右下角一直提示Computing additional info解决办法

今天不知道按了什么,发现Eclipse右下角一直提示computing additional info,打开progress,里面同时有好几条一样的信息,但是一直也执行不完,上网查找方案,发现原来是用了content assist (也就是,按下alt + / ,会出来代码提示)的功能造成的.eclipse会去查找java的源代码,首先在本地找,然后到internet上找.本地默认是没有java的源代码.computing additional info表示在搜索internet上的java的源