php-fpm死机怎么破

admin6个月前笔记52

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


相关文章

linux 文件权限解析

linux 文件权限解析

常用权限linux系统内有档案有三种身份 u:拥有者 g:群组 o:其他人这些身份对于文档常用的有下面权限:r:读权限,用户可以读取文档的内容,如用cat,more查看w:写权限,用户可以编辑文档x:...

网站性能优化的常用方法

网站性能优化的常用方法

集成 CDN内容交付网络(又名 CDN)是一个非常棒的工具,可以集成到你的网站中,因为它可以大大加快你的内容交付速度。因为它是一个分布式服务器网络,所以 CDN 会找到离用户最近的服务器并部署它来交付...

Linux 系统的备份与恢复

Linux 系统的备份与恢复

tar 命令副本(本机备份整个系统,以后还原还是还原到本机)。注意根目录下要有充足的可用空间用于备份。cd /  #tar.gz格式  tar c...

国内如何使用TikTok(抖音国际版)的方法,中国大陆使用tiktok海外版

国内如何使用TikTok(抖音国际版)的方法,中国大陆使用tiktok海外版

国内无法使用TikTok的原因TikTok虽然是国内公司开发的,但是本身服务于国外,除了出品方是国人,其他和facebook,instagram没啥两样,都是国外社交平台,所以这个并不会因为国内制作而...

微服务是什么?

微服务是什么?

微服务(microservice)是一种软件架构,正得到越来越多的关注。但是,它到底是什么意思?什么样的架构可以叫做微服务?网上的文章虽然很多,但是都太复杂,初学者不容易看懂。我认为,这个概念其实非常...

Linux 中的 su 和 sudo 命令有什么区别?

Linux 中的 su 和 sudo 命令有什么区别?

su 和 sudo 命令都允许用户执行非特权用户不允许做的系统管理任务,即只有 root 用户能执行的命令。有些人更喜欢 sudo 命令:例如 Seth Kenlon 最近发布的一篇 《在...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。