关于 nginx 502 和 504 的一点疑问

2018-11-11 11:04:19 +08:00
 cc959798

502 很好理解,是后端 cgi 程序超时然后断开了 cgi 连接,导致的,一般可能是数据库慢查询在之类的

504 是 cgi 还没有超时,nginx 过了自己的超时时间导致的 比如 nginx 是配置的 60s cgi 程序配置的 300s

但是现在的情况是同一个请求既有可能是 502,又可能是 504 如果是 504 的话,nginx 的超时时间是短于 cgi 的,这个样子就不会出现 502 了,感觉这是有些矛盾的

会不会是这个情况,nginx 的超时时间和 cgi 程序的超时时间是一样的,比如都是 60s,nginx 和 cgi 的计时不会太精确,就有可能是 502 又有可能 504

2855 次点击
所在节点    PHP
3 条回复
ppyybb
2018-11-11 11:25:02 +08:00
有没有可能是某些后端负载太大或者状态有问题,导致链接不上,这时候是 502。

某些后端没有问题,但是这个服务太慢,nginx 自己超时,这时候是 504。

负载均衡导致随机出现一种。
cc959798
2018-11-11 11:38:31 +08:00
@ppyybb 我们查到的如果 cgi 进程不够用,导致请求没有进程处理会导致 504 而不是 502,这种仔细想想也是正常的,比如 fmp 中的 master 和 worker,nginx 打过来了,没有 worker 处理,nginx 一直等着,worker 没有处理的,这个时候不会计算 cgi 的处理时间,压根就没处理,所以 nginx 等着超时了,但是一般发生这种情况前端网站一般都比较卡了,一台机器都这个样子了
当然这个地方比较模糊,一般 cgi 主动断开才是 502
hefish
2018-11-11 12:37:05 +08:00
cgi 端是 php 吗?是的话是不是可以看看 slowlog

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/506633

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX