Nginx 反向代理超时怎么办:从 proxy_read_timeout 到上游健康检查的排查笔记
【摘要】 线上服务挂在 Nginx 后面,偶发 504 最让人头疼。用户看到页面打不开,第一反应是后端挂了,但很多时候后端还在运行,问题在超时配置与上游状态不匹配。先分清三种超时:建连用 proxy_connect_timeout,发送请求用 proxy_send_timeout,等上游响应用 proxy_read_timeout。出现 504,大多是后者先到,上游还没算完。排查按四步走:用 curl...
线上服务挂在 Nginx 后面,偶发 504 最让人头疼。用户看到页面打不开,第一反应是后端挂了,但很多时候后端还在运行,问题在超时配置与上游状态不匹配。
先分清三种超时:建连用 proxy_connect_timeout,发送请求用 proxy_send_timeout,等上游响应用 proxy_read_timeout。出现 504,大多是后者先到,上游还没算完。
排查按四步走:用 curl 测耗时,确认慢的是接口还是 Nginx;执行 nginx -t 检查配置是否生效,改配置没重载最常见;看 error.log 的超时记录,确认超时在哪个上游;绕开 Nginx 直连上游对比耗时,直连也慢就别折腾 Nginx。
超时建议分别设为 5 秒、10 秒、30 秒。别把超时调到 300 秒,慢请求长期占住连接,流量一上来会拖垮服务。应先让接口变快,再把超时设为略高于正常耗时。
上游健康检查也要配好:upstream 用 max_fails=3 fail_timeout=30s 摘掉连续失败的上游,让另一台重试。但非幂等 POST 不要轻易重试,可能重复下单或扣款。
检查清单:配置已重载、慢接口耗时已确认、上游无单点故障、日志无大量超时记录。养成这四点习惯,504 就不再是玄学,而是一条按图索骥的排查链路。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)