网站首页 > 博客文章 正文
Nginx 502错误原因和解决方法
不管你是做运维还是做开发,哪怕你是游客,时不时会遇到 502 Bad Gateway 或 504 Gateway Time-out。出现这页面,把服务重启下,再实在不行重启下服务器,问题就解决了,特殊情况请继续阅读。
状态码解释
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 进程了。
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 错误主要从四个方向入手:
- max_children
- request_terminate_timeout、max_execution_time
- 数据库
- 网关服务是否启动如 php-fpm
- 504 错误主要查看 nginx.conf 关于网关如 fastcgi 的配置。
本文参考:嗨客网(www.haicoder.net)
猜你喜欢
- 2024-10-31 英雄联盟手游错误代码100008什么原因?LOL手游错误代码解决办法
- 2024-10-31 玩转网络自动化之ntc_templates模块
- 2024-10-31 C#程序与单片机通信时,如何自动初始化串口(2)?
- 2024-10-31 电机驱动_上位机_ModbusRTU通讯(伺服上位机)
- 2024-10-31 真实的线上故障处理案例(在线故障检测时应注意什么)
- 2024-10-31 问题反馈:为什么Cydia加载出现那么多红色错误?
- 2024-10-31 Norland诺兰德连接超时连接报错?一招解决连接问题
- 2024-10-31 处理超时订单(超时未付款)的解决方案
- 2024-10-31 第一后裔运行超时运行报错怎么办?一招解决运行问题
- 2024-10-31 基于 PTS 压测轻松玩转问题诊断(tps压测 指什么)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)