nginx-upstream-timed-out

Nginx upstream timed out 的定位与修复

现象

error.log 出现 upstream timed out (110: Connection timed out),客户端通常收到 504。Nginx 已经连上或尝试连接上游,但在超时时间内没拿到响应。

快速定位

grep -i 'upstream timed out' /var/log/nginx/error.log | tail -20
nginx -T | grep -nE 'proxy_(connect|read|send)_timeout|upstream|proxy_pass'
ss -lntp | grep ':<backend-port>'
curl -v --max-time 10 http://<backend>:<port>/health

常见根因

  1. 后端处理慢:数据库、外部 API、锁或 GC。
  2. proxy_read_timeout/proxy_connect_timeout 太短。
  3. 后端连接池、线程池或 worker 耗尽。
  4. 后端不可达、DNS 解析失败或防火墙丢包。
  5. upstream keepalive 配置不当,连接被复用后失效。

修复

相关命令