转自:http://www.ttlsa.com/html/3112.html
一. 戏说
不管你是做运维还是做开发,哪怕你是游客,时不时会遇到502 Bad Gateway或504 Gateway Time-out。出现这页面,把服务重启下,再实在不行重启下服务器,问题就解决了,但是,这问题还是会困扰着你,特别是做运维的人员。夜黑风高正酣睡时,一个电话响起,让你重启服务或IISRESET,肯定是极大不爽,立马要问候他妈了。呵呵,本文总结502与504故障分析与解决方法。
二. 状态码解释
502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
504 Gateway Time-out:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
三. 502 Bad Gateway原因分析
将请求提交给网关如php-fpm执行,但是由于某些原因没有执行完毕导致php-fpm进程终止执行。说到此,这个问题就很明了了,与网关服务如php-fpm的配置有关了。
php-fpm.conf配置文件中有两个参数就需要你考虑到,分别是max_children和request_terminate_timeout。
max_children最大子进程数,在高并发请求下,达到php-fpm最大响应数,后续的请求就会出现502错误的。可以通过netstat命令来查看当前连接数。
request_terminate_timeout设置单个请求的超时终止时间。还应该注意到php.ini中的max_execution_time参数。当请求终止时,也会出现502错误的。
当积累了大量的php请求,你重启php-fpm释放资源,但一两分钟不到,502又再次呈现,这是什么原因导致的呢? 这时还应该考虑到数据库,查看下数据库进程是否有大量的locked进程,数据库死锁导致超时,前端终止了继续请求,但是SQL语句还在等待释放锁,这时就要重启数据库服务了或kill掉死锁SQL进程了。
对于长时间的请求可以考虑使用异步方式,可以参阅《关于PHP实现异步操作的研究》。
四. 504 Gateway Time-out原因分析
504错误一般是与nginx.conf配置有关了。主要与以下几个参数有关:fastcgi_connect_timeout、fastcgi_send_timeout、fastcgi_read_timeout、fastcgi_buffer_size、fastcgi_buffers、fastcgi_busy_buffers_size、fastcgi_temp_file_write_size、fastcgi_intercept_errors。特别是前三个超时时间。如果fastcgi缓冲区太小会导致fastcgi进程被挂起从而演变为504错误。
五. 小结
总而言之,502错误主要从四个方向入手:
1. max_children
2. request_terminate_timeout、max_execution_time
3. 数据库
4. 网关服务是否启动如php-fpm
504错误主要查看nginx.conf关于网关如fastcgi的配置。

状态码502和504分析相关推荐

  1. HTTP状态码502与504的区别及解决思路

    HTTP响应返回502与504意味着什么? 首先得搞清楚502错误和504错误的区别,以我比较熟悉的PHP为例,502是PHP-FPM(PHP的进程管理器没办法从进程池里找到可分配的进程来处理请求了, ...

  2. http状态码502与504区别

    502 bad gateway 顾名思义 网关错误 后端服务器tomcat没有起来,应用服务的问题(前提是接入层7层正常的情况下). 应用服务问题一种是应用本身问题:另一种是因为依赖服务问题比如依赖服 ...

  3. 请谈一下,你知道的http请求,并说明应答码502和504的区别

    OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法.也可以利用向Web服务器发送'*'的请求来测试服务器的功能性. HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回 ...

  4. 接口自动化测试系列(二):深入分析HTTP状态码502

    一.描述 分类 分类描述 1** 信息,服务器收到请求,需要请求者继续执行操作 2** 成功,操作被成功接收并处理(成功表示服务器成功接收了请求但未必进行处理) 3** 重定向,需要进一步的操作以完成 ...

  5. http状态码(204,304, 404, 504,502)

    网络状态码含义,常用(204,304, 404, 504,502) 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 常见HTTP状态码大全  1xx(临时响应) ...

  6. shell脚本:检测服务器存活状态/80端口/502状态码

    文章目录 检测服务器是否宕机 检测web服务(80端口)是否正常 检测http502状态码 检测服务器是否宕机 需求:ping一台需要被检测的服务器,如果丢包率为100%,则表示机器出问题了,随后发送 ...

  7. HTTP状态码分类(常用HTTP状态码和HTTP状态码大全)

    http状态码有什么用? http状态码的核心作用是Web Server服务器用来告诉客户端,当前的网页请求发生了什么事,或者说当前Web服务器的响应状态.所以HTTP状态码常用来判断和分析当前Web ...

  8. 面试被问了三次的http状态码到底有什么

    面试被问了三次的http状态码到底有什么 想想很多人面试都会有被问到http的状态码的经历,我也是经历了三面,每次都在问这个问题.今天就来细致的讨论一下HTTP的状态码,如有不足,欢迎留言交流: HT ...

  9. http status 404 – 未找到_HTTP状态码

    200 - OK,服务器成功返回网页 Standard response for successful HTTP requests. 301 - Moved Permanently(永久跳转),请求的 ...

最新文章

  1. 神经元模型及网络结构
  2. python函数-函数进阶
  3. 显卡测试软件毛毛虫,超龙超龙,与众不同,顶流配备,散热一流,3070Ti超龙旗舰版评测...
  4. 开源软件的安全性风险_您的开源安全软件是否安全性较低?
  5. servlet mysql insert_servlet+mybatis 实现mysql的增删改查实例
  6. LINUX环境并发服务器的三种实现模型
  7. php ini set开启方法,php ini_set更改php.ini配置功能_PHP教程
  8. win10计算机管理看不见蓝牙,解决win10蓝牙开关不见了的方法
  9. [C#]使用EasyHook注入ws2_32.dll,实现send和recv拦截数据封包
  10. 计算机程序无法定位,电脑显示无法定位程序输入点XXX于动态链接库怎么办
  11. 信息学奥赛一本通 欧拉回路
  12. Mac 输入法自动切换,代码编辑器中文状态下使用英文标点
  13. Oracle导出FSG,SQL语句 - FSG行集、列集定义导出
  14. SaaS 长河下,AfterShip 技术升级的“加减法”
  15. matlab行星运动轨迹仿真动画,利用Matlab可视化功能实现微分方程求解行星运动轨迹...
  16. Ipad上选择专业好用的思维导图软件
  17. 算法与价值观如何平衡?凤凰新闻客户端新版给出了答案
  18. 视频教程-爱上Axure之软件基础视频教程-Axure
  19. 中国人民公安大学 网络对抗技术作业一
  20. sklearn.model_selection.StratifiedKFold

热门文章

  1. 简单聊聊 Ironic 是如何管理裸金属的
  2. PCM音频格式的深入理解
  3. 溢出漏洞,缓冲区溢出漏洞
  4. 进制转换 2进制转10进制 10进制转2进制
  5. Android Things 开发入门
  6. MPEG4和DivX的问题解答荟萃
  7. html.dropdownlist必填,html.dropdownlist传值
  8. SQL Developer 19.2.1下载安装
  9. ao史密斯定时设置_下图ao史密斯热水器的预约定时怎么用?-史密斯热水器怎么接线...
  10. 51单片机,时钟频率,机器周期,与执行指令的时间