首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
华为云
V2EX  ›  PHP

关于 nginx 502 和 504 的一点疑问

  •  
  •   cc959798 · 5 天前 · 722 次点击

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

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

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

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

    3 回复  |  直到 2018-11-11 12:37:05 +08:00
        1
    ppyybb   5 天前 via iPhone   ♥ 1
    有没有可能是某些后端负载太大或者状态有问题,导致链接不上,这时候是 502。

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

    负载均衡导致随机出现一种。
        2
    cc959798   5 天前
    @ppyybb 我们查到的如果 cgi 进程不够用,导致请求没有进程处理会导致 504 而不是 502,这种仔细想想也是正常的,比如 fmp 中的 master 和 worker,nginx 打过来了,没有 worker 处理,nginx 一直等着,worker 没有处理的,这个时候不会计算 cgi 的处理时间,压根就没处理,所以 nginx 等着超时了,但是一般发生这种情况前端网站一般都比较卡了,一台机器都这个样子了
    当然这个地方比较模糊,一般 cgi 主动断开才是 502
        3
    hefish   5 天前
    cgi 端是 php 吗?是的话是不是可以看看 slowlog
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   683 人在线   最高记录 3821   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 17ms · UTC 20:49 · PVG 04:49 · LAX 12:49 · JFK 15:49
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1