我有使用node/express编写的微服务,托管在EC2上并使用应用程序负载均衡器。
一些用户甚至在请求到达服务器之前就遇到了502错误。
我在每个实例中注册每个日志,但是我没有这些请求的日志,我只有502之前和502之后的请求,因此我认为请求从未到达服务器。大多数用户通过刷新页面或使用匿名标签解决此问题,这会将连接转到另一台机器(我们有6台)。
我可以从负载均衡器日志中得知,负载均衡器几乎立即对请求进行502响应。我猜测这可能是TCP RST。
很久以前,我遇到过类似的问题,当时我不得不将keepAliveTimeout
和headersTimeout
添加到节点配置中。以下是我的设置(仍然使用LB默认的60秒):
server.keepAliveTimeout = 65000;
server.headersTimeout = 80000;
所有实例的指标,特别是内存和CPU使用情况都很好。
这些502错误是在我们引入一些包(例如axios)的更新之后开始出现的。起初,我认为可能是axios的问题,因为默认情况下没有启用keep-alive。但它没有起作用。除了axios外,我们只使用request。
您有什么提示可以帮助我调试/解决此问题吗?