2019独角兽企业重金招聘Python工程师标准>>>

一. 戏说
不管你是做运维还是做开发,哪怕你是游客,时不时会遇到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与504的关系

当max_children过小,而请求过多时,子进程处理请求会很慢。当处理不过来,超出了nginx配置的fastcgi超时时间,则nginx在限定时间内获取不到上游服务器的响应,那么,则会发生504错误。当fpm或fastcgi执行过程中出错了,则会反馈给nginx错误响应,那么,就发生了502错误。

五. 小结
总而言之,502错误主要从四个方向入手:
1. max_children
2. request_terminate_timeout、max_execution_time
3. 数据库
4. 网关服务是否启动如php-fpm

504错误主要查看nginx.conf关于网关如fastcgi的配置。

转载于:https://my.oschina.net/flyrobin/blog/1505036

502与504错误分析相关推荐

  1. 网站502与504错误分析

    本文转载自:http://www.ttlsa.com/html/3112.html 一. 戏说 不管你是做运维还是做开发,哪怕你是游客,时不时会遇到502 Bad Gateway或504 Gatewa ...

  2. WAF(NGINX)中502和504的区别

    0x00 前言 华为云WAF使用最好的服务器和带宽为客户提供反向代理和安全检测服务,但是在使用过程中,个别用户的请求出现了502或者504.因此我们团队也经常受到用户的反馈,这里可以大致和大家澄清一下 ...

  3. 一键解决 500、502和504 Internal Privoxy Error 问题(图文详解)

    一键解决 500.502和504 Internal Privoxy Error 问题(图文详解) 参考文章: (1)一键解决 500.502和504 Internal Privoxy Error 问题 ...

  4. 状态码502和504分析

    转自:http://www.ttlsa.com/html/3112.html 一. 戏说 不管你是做运维还是做开发,哪怕你是游客,时不时会遇到502 Bad Gateway或504 Gateway T ...

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

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

  6. nginx和fpm的进程数配置和502,504错误

    502 和 php-fpm.conf 1.php-cgi进程数不够用.php执行时间长,导致没有空闲进程处理新请求. 2.php-cgi进程死掉.php-fpm超时时间短,当前进程执行超时关闭连接. ...

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

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

  8. 解决 502、504 Gateway Time-out(nginx)

    504 Gateway Time-out问题常见于使用nginx作为web server的服务器的网站 我遇到这个问题是在升级discuz论坛的时候遇到的 一般看来, 这种情况可能是由于nginx默认 ...

  9. HTTP返回代码代表的含义(403,404,500,502,504)

    在网站日志中,我们经常会看到很多返回的http代码,如201.304.404.500等等.可是这些具体的返回的HTTP代码究竟什么含义呢,在此做一下知识普及吧,记不住不要紧,到时候看看就行了,但最主要 ...

最新文章

  1. 数据库服务器属于用电信息采集,智能小区用电信息采集服务器系统和数据处理方法专利_专利查询 - 天眼查...
  2. Winform 系统调优
  3. 软件工程与项目管理的关系_软件工程:软件工程概述13个问题解答?
  4. Bazel构建工具的安装
  5. Java数据解析---PULL
  6. java 异常 中英文_史上最全的Java中所有Exception异常中英文对照
  7. 配置Pylint for Python3.5
  8. ssh mysql视屏_ssh+mysql实现的Java web在线订电影票系统项目源码附带视频指导教程...
  9. JAVA写入与读取GPX文件工具类
  10. KSVD稀疏表示-字典学习 笔记
  11. cms采集系统-批量文章采集支持各大CMS采集
  12. Pandas创建透视表教程
  13. Bloodsucker ZOJ-3551 期望DP
  14. 栅格布局 xs sm md lg
  15. 25-javaweb接入支付宝支付接口
  16. 完美解决!无法启动此程序,因为计算机中丢失libmysql.dll解决方案(详细版!)
  17. 【EI会议|检索稳定】2021信息、控制及自动化国际学术会议(ICICA 2021)
  18. 多线程并发下集合不安全类-ArrayList
  19. antv/G2 v4使用遇坑之旅
  20. 机器学习项目实战—吸烟与人体疾病关系预测

热门文章

  1. html 第三次作业
  2. 三星全球首家量产18nm DRAM
  3. 大数据之---Yarn伪分布式部署和MapReduce案例
  4. 利用opencv进行移动物体检测
  5. DHCP Server 故障转移实现 (结合H3C交换机)
  6. HBase数据快速导入之ImportTsvBulkload
  7. [AlwaysOn Availability Groups]排查:Primary上的修改无法在Secondary体现
  8. 生产环境WEB服务管理脚本之日志检测脚本
  9. SQL Server索引设计 第五篇
  10. 江西理工大学计算机管理技术期末复习(wangzhendong)网络管理与维护