502 很好理解,是后端 cgi 程序超时然后断开了 cgi 连接,导致的,一般可能是数据库慢查询在之类的
504 是 cgi 还没有超时,nginx 过了自己的超时时间导致的 比如 nginx 是配置的 60s cgi 程序配置的 300s
但是现在的情况是同一个请求既有可能是 502,又可能是 504 如果是 504 的话,nginx 的超时时间是短于 cgi 的,这个样子就不会出现 502 了,感觉这是有些矛盾的
会不会是这个情况,nginx 的超时时间和 cgi 程序的超时时间是一样的,比如都是 60s,nginx 和 cgi 的计时不会太精确,就有可能是 502 又有可能 504
1
ppyybb 2018-11-11 11:25:02 +08:00 via iPhone 1
有没有可能是某些后端负载太大或者状态有问题,导致链接不上,这时候是 502。
某些后端没有问题,但是这个服务太慢,nginx 自己超时,这时候是 504。 负载均衡导致随机出现一种。 |
2
cc959798 OP @ppyybb 我们查到的如果 cgi 进程不够用,导致请求没有进程处理会导致 504 而不是 502,这种仔细想想也是正常的,比如 fmp 中的 master 和 worker,nginx 打过来了,没有 worker 处理,nginx 一直等着,worker 没有处理的,这个时候不会计算 cgi 的处理时间,压根就没处理,所以 nginx 等着超时了,但是一般发生这种情况前端网站一般都比较卡了,一台机器都这个样子了
当然这个地方比较模糊,一般 cgi 主动断开才是 502 |
3
hefish 2018-11-11 12:37:05 +08:00
cgi 端是 php 吗?是的话是不是可以看看 slowlog
|