You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX运行数天后出现代理请求超时问题排查求助

问题分析与解决方案

你的问题核心是NGINX运行一段时间后,与EKS上游服务的连接管理出现异常,导致连接超时且上游无日志记录,重启NGINX后临时恢复。以下是具体原因和解决办法:

1. 未配置上游长连接复用

默认NGINX不会复用与上游的TCP连接,每次请求都新建连接。长时间运行后,系统临时端口耗尽或NGINX连接队列积累无效连接,触发默认60秒的proxy_connect_timeout超时——此时上游完全没收到请求,所以无日志记录。

解决配置:
在NGINX配置中定义上游块并开启keepalive:

# 在http块内、server块外定义上游集群
upstream eks_api {
    server some-aws-eks-adress.amazonaws.com:5000;
    keepalive 64; # 保持64个长连接,可根据并发量调整
}

server {
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;
    server_name *.example.com;

    location / {
        proxy_pass https://frontend.address;
    }

    location /api {
        proxy_pass http://eks_api;
        # 启用HTTP/1.1以支持长连接
        proxy_http_version 1.1;
        proxy_set_header Connection ""; # 清空Connection头,避免上游主动关闭连接
    }
}

2. NGINX DNS缓存未动态刷新

EKS服务域名会解析到多个Pod IP,NGINX默认缓存DNS结果直到进程重启。当EKS Pod滚动更新或IP变更后,NGINX仍使用旧IP,导致连接失败超时。

解决配置:
在upstream块中添加DNS自动刷新(要求NGINX版本≥1.1.9),同时在http块配置DNS resolver:

http {
    # 使用AWS VPC DNS或公共DNS,确保能解析EKS服务域名
    resolver 169.254.169.253 8.8.8.8 valid=30s;

    upstream eks_api {
        server some-aws-eks-adress.amazonaws.com:5000;
        keepalive 64;
        resolve some-aws-eks-adress.amazonaws.com valid=30s; # 每30秒刷新一次DNS
    }

    # 其余server配置不变...
}

3. 优化超时参数

默认60秒的连接超时太长,会导致用户等待过久,同时可添加重试机制(注意:仅对幂等接口使用重试):
在location /api块中补充:

proxy_connect_timeout 10s; # 缩短连接超时到10秒
proxy_send_timeout 10s;
proxy_read_timeout 15s;
proxy_next_upstream error timeout; # 连接错误/超时自动重试下一个上游IP

4. 调整EC2系统连接限制

EC2实例的TCP连接资源可能被耗尽,执行以下命令修改系统参数:

# 扩大临时端口范围
echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
# 开启TIME_WAIT连接复用,缩短回收时间
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf
# 生效配置
sysctl -p

修改完成后重启NGINX,观察几天是否还会出现超时问题。

内容的提问来源于stack exchange,提问作者Felix Engelmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 12:13:20