nginx+php-fpm遇到的502报错
1 首先查看一下目前php-fpm的进程数量
ps aux |grep php-fpm |grep -v grep |grep "^www"|wc -l
将输出结果与nginx.conf配置文件中的max_children参数做对比
如果两个值相近,那么就需要将max_children相应的增加
2 看一下nginx.conf配置文件中Nginx的等待时间的设置,可以相应增加
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
后来我将网站上一个shell脚本做了相应的修改:
主要是检测php-fpm进程的
脚本原则:
在检测到502报错之后,在干掉php-fpm进程之前先弄清楚一些东西:
统计子进程的数量是为了,判断一下是不是因为子进程的数量接近配置文件中max_children这个值的设置
如果这两个值很接近的话,说明排队的php请求比较多,处理请求过于繁忙也会导致502报错
统计CPU使用率最大的php-fpm进程所占用的CPU%,并记录相应的进程号,可以追踪进程号,做初步确定是否是 file_get_contents() 导致的问题
总之这些操作是有助于分析事发原因的
另外,如果killall进程之后不检测是否将进程杀干净,有可能会影响进程的重新启动,所以有必要进行这一步判断
如果运行该脚本的机器是在线服务器,那么当检测到进程没有杀干净时,最好报警或者是记录日志,尽量避免一直杀进程的操作
脚本内容:
#!/bin/bash
funCheck()
{
if [ -z "`ps aux |grep php-fpm |grep -v grep`" ];then
if [ -z "`cat /usr/local/php/php-fpm.pid `" ];then
echo "php-fpm process doesn't exist ,you can start it now `date`" >> $Log
else
echo "php-fpm process exists still `date`" >> $Log
fi
fi
}
Log=/home/sysadmin/zhaoyj/log/PhpFpm.log
ChildProcess=`ps aux |grep php-fpm |grep -v grep |grep "^www"|wc -l`
DATE=`date "+%Y%m%d-%H:%M:%S"`
Message="MG Server php-fpm child process number is $ChildProcess at $DATE"
Admin="邮件地址"
if [ -e /var/lock/subsys/502 ]
then
if [ $ChildProcess -ge 100 ];then
echo "$Message" |mail -s "$Message" $Admin
echo "$Message" >> $Log
fi
Record=``ps aux |grep php-fpm|grep -v grep |awk '{print $3"\t"$2"\t"$11}'|tr -d :|sort -nr|head -1`
CPU=`awk '{print $1}' $Record`
PID=`awk '{print $2}' $Record`
Result=`awk -v NUM1=$CPU -v NUM2=50 'BEGIN{print(NUM1>NUM2)?"1":"0"}'`
Message2="php-fpm child process CPU% is $Result"
if [ $Result -eq 0 ];then
echo "$Message2 ,normal now $DATE" >> $Log
else
echo "$Message2 ,not normal now $DATE" >> $Log
echo "$Message2 ,not normal now $DATE" |mail -s "$Message2 ,not normal now $DATE" $Admin
fi
killall -9 curl 2>/dev/null
killall -9 php-fpm 2>/dev/null
funCheck
service php-fpm start >/dev/null
echo "[ `date +'%h %d %T'` ] PHP-FPM died with no response, all processes restarted">>/usr/local/php/log/php-fpm-restart.log
else
touch /var/lock/subsys/502
if [ `curl --connect-timeout 5 -I URL 2>/dev/null | grep '502 Bad Gateway' -c` != '0' ]
then
killall -9 php-fpm 2>/dev/null
funCheck
service php-fpm start >/dev/null
echo "[ `date +'%h %d %T'` ] PHP-FPM died with 502 bad gateway, all processes restarted">>/usr/local/php/log/php-fpm-restart.log
fi
rm -f /var/lock/subsys/502
fi
如果有什么缺漏,请大家多多指点,谢谢
nginx+php-fpm遇到的502报错相关推荐
- Nginx一次奇怪的502 报错
1 一次奇怪的线上问题 之前遇到nginx报出了如下的error,upstream sent too big header while reading response from upstream,导 ...
- Nginx一次奇怪的502 报错探究
转载: https://mp.weixin.qq.com/s?__biz=MzIyMTg0OTExOQ==&mid=2247484152&idx=2&sn=8e2b9133fd ...
- 为什么PHP项目运行报错502,Nginx+PHP-FPM遇到的502报错
1 首先查看一下目前php-fpm的进程数量 ps aux |grep php-fpm |grep -v grep |grep "^www"|wc -l 将输出结果与nginx.c ...
- 新部署的nginx访问出现502报错
记录自己的一次排错,原理后续再补充.在公司使用网络代理上网.自己摸鱼安装部署nginx,自检一切环境正常,依赖正常.但访问出现502报错! 但是使用本机curl和宿主机telnet均出现以下问题: 问 ...
- php fpm 日志记录,如何解决nginx下php-fpm不记录php报错日志的问题
如何解决nginx下php-fpm不记录php报错日志的问题 发布时间:2020-07-28 10:17:29 来源:亿速云 阅读:150 作者:Leah 本篇文章为大家展示了如何解决nginx下ph ...
- nginx php fpm 日志,nginx下php-fpm不记录php报错日志怎么办?
解决nginx下php-fpm不记录php报错日志的办法:1.修改[php-fpm.conf]中配置,没有则增加:2.修改[php.ini]中配置,没有则增加:3.重启[php-fpm]即可. 解决n ...
- gitlab 安装与502报错
sudo yum install -y curl policycoreutils-python openssh-server sudo systemctl enable sshd sudo syste ...
- nginx鉴权之后查看pdf报错未能加载pdf文档
nginx鉴权之后查看pdf报错未能加载pdf文档,其他浏览器正常,只有谷歌浏览器出现了该问题 nginx做了鉴权后存在该问题现象,谷歌浏览器对于跨域的要求比较严格导致的 #主要是在nginx配置中加 ...
- linux系统Nginx下载安装步骤(含报错解决方法)
linux系统Nginx下载安装步骤(含报错解决方法) 基础步骤 安装过程可能出现的报错及解决方法 执行 ./configure --prefix=/opt/nginx 报错 执行 make inst ...
最新文章
- argument在python里什么意思_在Python中星号*是什么意思?
- 美团今年应届生年薪 35w+?为什么互联网大厂校招的薪资一年比一年高?
- TCP/IP模型各层的作用和设备
- Hive时间是String格式截取字串和转换数据类型小贴士
- 蜗杆参数法设计_齿轮几何尺寸设计,很实用的Excel表格(附自动计算表格)
- php--- 转换编码
- mysql time转换输出_MySQL将timediff输出转换为日,时,分,秒格式?
- vb listview扁平表头的列表框
- 科大讯飞:讯飞输入法日语音交互次数超10亿,将发力5G和AIoT领域
- L2TP详解(五)——Client Initiated隧道和会话建立过程
- 编译easymule 1.1.5
- 多媒体架构---display介绍
- IT是什么意思?什么是IT行业?
- 云上城之个服务器维护时间,云上城之歌开服时间表 官方最新开服情况
- CSS背景图片平铺占满整个浏览器,且固定住不随滚动条移动
- 点击化学DBCO修饰药物(DBCO-PEG-雷替曲塞,甲氨喋呤MTX,培美曲塞,磺胺地索辛)
- 853计算机综合基础包括什么,2017年南京农业大学853计算机专业基础综合硕士研究生参考书目...
- yami认证显示连接服务器失败,yamip安装教程
- 5. 数据库题(以个人熟悉数据库为准、按要求写出sql) (1)	计算每个人的总成绩并排名(要求显示字段:学号,姓名,总成绩) (2)	计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最
- 云存储是什么?云存储的常见三种类型