Nginx突发返回499状态码排查求助(上游连接重置但直连Node应用正常)
Nginx突发返回499状态码排查求助(上游连接重置但直连Node应用正常)
遇到这种间歇性的生产问题真的头大!先把我的情况和困惑整理出来,求各位大佬帮忙分析:
环境背景
- Kubernetes集群,Ingress流量指向3个Nginx容器实例
- Nginx通过
location /app/配置反向代理到后端的Node应用
问题现象
- 服务正常运行数天甚至数周后,3个Nginx容器会同时开始报错,日志显示上游(Node应用)连接被客户端意外关闭
- 客户端侧会出现30%的请求延迟120s或60s(看起来是第一个Nginx实例请求失败后,自动切换到另一个实例重试)
- 但奇怪的是:
- 直接通过Ingress路由访问Node应用,100%成功,完全没有报错
- 进入Nginx容器内部,用
curl请求Node应用,也是100%成功,和外部请求Nginx的情况完全不同
- 临时解决方案:重启Nginx容器后问题立即消失,但过段时间会再次复发
已排查的资源情况
- CPU使用率:远低于集群节点的上限
- 内存使用率:同样远低于上限
- Nginx配置:已设置1024个socket
- 文件描述符:硬限制和软限制都设置为100k,没有耗尽迹象
当前困惑与假设
- 我怀疑是某种资源耗尽,但实在找不到具体是哪种资源:
- 没有开启长连接,如果是端口/socket耗尽,为什么在容器内部
curl不会出现同样的问题? - 如果问题出在Node应用本身,为什么直连它完全正常?而且重启Nginx(甚至只是reload配置,主进程保留、启动新worker进程)就能解决问题,这逻辑根本说不通
- 没有开启长连接,如果是端口/socket耗尽,为什么在容器内部
- 现在完全卡壳了,感觉是个定时炸弹,正常运行几天就炸一次,实在找不到根源
求问方向
有没有大佬遇到过类似的情况?或者能给一些排查的思路?比如Nginx的哪些配置、统计指标我应该重点关注?
备注:内容来源于stack exchange,提问作者peteisace
相关产品推荐
相关产品推荐

