什么会使 expressjs 503?

What would make expressjs 503?

我使用 expressjs 作为我的服务器。一个用户点击了一个代理服务,这个代理服务点击了我的。代理服务告诉我我的已经给出了 503。在这种情况下,我不能真正记录它发生的情况,因为它似乎只是错误地表达出来了。我所知道的是这个其他服务收到 503。我没有在我的代码中设置它。我四处搜索时找不到任何东西,如果不是代理我就不知道 503 正在发生。在数十万个请求中,这种情况发生了将近 100 次。

我不希望任何人得到直接的答案,但是任何线索都将不胜感激,任何获得答案的线索都将在下面的评论中标记为答案。希望一些评论能帮助我为这个问题提供更好的信息!

好吧,我想到的一件事是服务器过载。如果您正在检查的路由正在执行同步任务,并且您一次发送大量请求,您可能最终会阻塞您的服务器。 Express 建议您拥有的每个路由处理程序都应该是异步的,这样即使发生大量请求,服务器也不会被阻塞。

我不知道你的情况是否如此,但值得一试。

解决方案与Envoy & Node有关。同事建议服务器超时,我发现 https://github.com/envoyproxy/envoy/issues/1979.

在我的例子中,我添加了这个:server.keepAliveTimeout = 0;

您可以在 https://nodejs.org/docs/latest-v10.x/api/http.html#http_server_keepalivetimeout 查看文档。

我不从事基础设施方面的工作,所以我花了一点时间才意识到它是在那个层中,团队中的人们实现了 Envoy 的使用。

当 Envoy 收到 ECONNRESET 时,它发回一个 503