问题描述

最近偶然收到报警邮件,Nginx 502状态码

环境是Nginx+php-fpm 配置 8核16G

yds.png

分析处理:

根据经验应该是php-fpm原因

(1) php-fpm进程挂掉起不来

(2) php-fpm的9000端口不通

(3) 请求过多,php-fpm处理队列

登录后台服务器查看php-fpm进程和端口等

1. php-fpm 进程存在

# ps auxf | grep 'php-fpm: master' |grep -v grep

root 31590 0.0 0.0 316140 9348 ? Ss 14:26 0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)

2. 9000端口是通的

# telnet 127.0.0.1 9000

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

3. php-fpm 进程只有12个

# ps auxf | grep 'php-fpm' | wc -l

12

由上命令结果看出php-fpm进程较少,先增加php-fpm,配置文件php-fpm.conf

pm = dynamic

pm.max_children = 600

pm.start_servers = 300

pm.min_spare_servers = 300

pm.max_spare_servers = 500

pm.max_requests = 6000

修改后重启php-fpm,完美收工。

过一段时间后又偶然收到后台报警502。

马上登录后台服务器查询进程和端口,都正常。

开始查看日志。

(1) 查看nginx访问日志502

nginx-access.png

(2) 查看nginx error日志

查看到connect() failed (111: Connection refused) while connecting to upstream

应该是php-fpm问题

nginx-error.png

(3) 查看php-error.log日志

看到php-fpm每分钟都在重启

NOTICE: Finishing ...

NOTICE: exiting, bye-bye!

php-error.png

(4) 去查看计划任务。有个脚本每分钟执行一次。

内容是:

(1) 判断php-fpm进程是否存在,如不存在,则重新启动php-fpm;

(2) 判断剩余内存,如果剩余内存<1600M,则重新启动php-fpm;

(5) 临时停止这个脚本后,php-fpm未重启过。

(6) free -m 查看内存还剩200M,所以计划任务脚本会重启php-fpm;但是重启php-fpm后buffer/cache未释放。所以每分钟会重启php-fpm;

在脚本中添加手动释放内存,恢复正常;

php_restart (){

mem=`free -m|grep Mem|awk '{print $4}'`

if [ ${mem} -lt 1600 ];then

echo "3" > /proc/sys/vm/drop_caches

/etc/init.d/php-fpm restart

echo `date` >> /tmp/phprestart.log

fi

}

php 502状态码,Nginx502状态码处理相关推荐

  1. 状态码202_HTTP状态码大全

    1xx消息 这一类型状态码代表请求已被接收,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束. 100 客户端应当继续发送请求.这个临时响应是用来通知客户端,它的部分 ...

  2. python状态码409_HTTP状态码

    HTTP各种相应的状态码 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518.RFC 28 ...

  3. 302状态码_HTTP状态码status code详解

    http状态码可以让我很方便的了解到请求的所在状态,所以很有必要总结一下,对今后的学习也是很有帮助的. 什么是HTTP状态码 HTTP状态码的作用是:web服务器用来告诉客户端,发生了什么事. 状态码 ...

  4. python网页查询然后返回结果_python(30) 获取网页返回的状态码,状态码对应问题查询...

    获取访问网页返回的状态码 html = requests.get(Url) respon= html.status_code 以下内容来自于维基百科:点击查看网页 1xx消息 这一类型的状态码,代表请 ...

  5. HTTP状态码(响应码)

    前言 对于一些刚刚入门的网安的小白来说,可能并不太能了解状态码的作用.这也是我前期学习时的一个状态.当你参加过HW之类的一些网安活动或者参加工作后,你会发现你经常要和响应码打交道.你在使用安全设备查看 ...

  6. ucosiii源码_UCOSIII任务的基本状态与转换状态

    点击上方公众号名称关注,获得更多内容 ✎ 编 者 悟 语 每次转换的不适中可能会孕育出新的格局. 文 章 导 读 今天给大家整理汇总了下UCOSIII任务的基本状态与转换状态相关的内容,希望对小伙伴们 ...

  7. hox 状态管理库源码解析

    文章目录 hox是什么 hox实现状态共享的方式 基本使用 全局状态共享 局部状态共享 源码解析 index.js 入口文件 coantainer.tsx 管理每个hook 全局状态共享的实现 Hox ...

  8. 微信支付:支付流程分析、微信扫码支付(HttpClient)、微信支付二维码生成、检测支付状态、订单状态操作准备工作、支付信息回调、MQ处理支付回调状态、定时处理订单状态

    微信支付 微信支付开发的整体思路 生成支付二维码 查询支付状态(微信的服务器) 实现订单状态的修改.删除订单 支付状态回查->微信服务器将支付状态返回给支付微服务 MQ处理支付回调状态 Rabb ...

  9. 页面HTTP状态查询“返回状态码:200 ”是什么意思?(网页响应状态码)

    200是响应正常的意思,这个是服务器返回页面的响应头信息.里面bai的Transfer-Encoding: chunked,意思是使用了提前不可知数据长度的传输方式,需要浏览器继续读取响应,接下来才知 ...

最新文章

  1. 国内丨中国人工智能标准化体系建设提速
  2. 实验三:实现一个大素数生成算法
  3. 使用NeMo快速入门NLP、实现机器翻译任务,英伟达专家实战讲解,内附代码
  4. Android移动开发之【Android实战项目】DAY10-App端耗流量场景问题及减少消耗办法
  5. 初学者先学python语音好吗_献给Python初学者 零基础学习Python能学会吗
  6. Java中 读-写 文件 BufferedReader BufferedWriter
  7. priority_queue优先队列
  8. pycharm在ubuntu xfce下面Alt+insert快捷键冲突解决
  9. t’触发器真值表和状态方程_清写出触发器按逻辑特性的分类;写出T触发器的状态方程。...
  10. 斜度符号标注_几何作图之斜度和锥度
  11. 【Python】提升Python程序性能的好习惯
  12. 无人驾驶之入门(车联网和5G)
  13. 梯度下降(二)--机器学习
  14. android 音效下载地址,V4A+Dolby Atmos安卓全局音效
  15. 计算流体力学c语言教程,计算流体力学教程
  16. C++ primer 个人学习总结
  17. 【转】PIC单片机的 程序存储器,数据存储器,EEPROM区别
  18. 芯片解密MC9S08DZ16 飞思卡尔系列芯片解密
  19. 一文讲透商业智能BI 到底是什么[转]
  20. Mac下cmake使用

热门文章

  1. HTML DOM教程 37-HTML DOM Meta 对象
  2. 程序员的算法课(10)-字符串排序算法实例(纯代码)
  3. 使用jRebel在IntelliJ IDEA 中进行 Java 热部署
  4. vs studio2015导入本地项目_Visual Studio2019自定义项目模板
  5. android 自定义加载动画效果,Android 自定义View修炼-自定义加载进度动画LoadingImageView...
  6. ros云服务器_减少运维工作量,如何通过 ROS 轻松实现资源编排新方式
  7. 前端性能优化之 gzip+cache-control
  8. jquery slideDown slideUp 对于table无效
  9. OK335xS dhcpcd porting
  10. 探索C#之6.0语法糖剖析