高峰期部分请求返回 504,错误日志里反复出现上游读取超时。日志里能对上时间点,这种反而好排。

后端处理时间超过网关等待阈值,常见于慢查询、外部接口阻塞或工作进程不足。这一点先确认清楚,后面就不用反复试。

tail -f /var/log/nginx/error.log | grep upstream
# 应用侧
# 查看慢接口耗时分布
# 调整
proxy_read_timeout 60s;

「Nginx upstream 超时」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。

临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

处理上按这个顺序:对比应用侧耗时与网关超时配置;排查慢接口与连接池;按容量调整超时与进程数。

结果对不对很好判断,高峰期不再出现上游超时,接口耗时分布稳定。

作者 9823189