我有用应用程序负载均衡器托管在 EC2 上的 node/express 编写的微服务。
一些用户甚至在请求到达服务器之前就收到了 502。
我在每个实例中注册每个日志,我没有这些请求的日志,我在 502 之前有请求,在 502 之后有请求,这就是为什么我假设请求永远不会到达服务器的原因。大多数用户通过刷新页面或使用匿名选项卡来解决这个问题,这会连接到不同的机器(我们有 6 个)。
我可以从负载均衡器日志中看出,负载均衡器几乎立即以 502 响应请求。我猜这可能是 TCP RST。
很久以前我也遇到过类似的问题,我不得不在节点配置中添加keepAliveTimeout
和。headersTimeout
这是我的设置(仍然使用 60 年代的 LB 默认值):
server.keepAliveTimeout = 65000;
server.headersTimeout = 80000;
所有实例的指标,尤其是内存和 CPU 使用率都很好。
这些 502 错误是在我们进行更新后开始的,我们在其中引入了几个包,例如 axios。一开始以为可能是axios,因为keep-alive默认是没有开启的。但它没有用。除了axios,我们只使用request。
关于我应该如何调试/修复此问题的任何提示?