快速超时始终在 1 分钟后发生



我有一个快速服务器,在发布到 Cloud Foundry 后会达到 1 分钟的超时。在本地,我可以设置所需的任何超时。这可能是Pivotal Cloud Foundry的问题,但我不确定什么设置可能会破坏事情。这是我在代码中尝试的内容:

https://nodejs.org/dist/latest-v8.x/docs/api/http.html#http_server_settimeout_msecs_callback

https://nodejs.org/dist/latest-v8.x/docs/api/http.html#http_server_timeout

https://github.com/expressjs/timeout

https://github.com/expressjs/express/issues/2174

然后只是为了踢,我把它们都放到我的代码中,1 分钟后它仍然超时。这是我得到的原始响应:

HTTP/1.1 504 GATEWAY_TIMEOUT
Content-Length: 0
Connection: keep-alive

我认为也许我必须设置一些 linux 服务器配置。节点上是否有任何内容可以硬限制连接可以持续多长时间?是什么让它发送该响应?我的代码中没有任何内容可以发送504 GATEWAY_TIMEOUT.在本地,当我设置 1 分钟超时时,我什至没有得到该响应。我得到:

Empty reply from server

这很正常。任何建议不胜感激。

--------------------更新--------------------

Francisco Mateo谈到的GoRouter确实是问题所在,但根据Pivotal的支持:

要更改 go 路由器上的超时,您必须修改 go 路由器的 BOSH 清单。在完整的 Pivotal Cloud Foundry 环境中,这是一个微不足道的变化。但是,我们不允许在 Pivotal Web 服务上进行此类更改,因为它们会影响多个客户。

显然不可能覆盖它,但是如果我不时发送数据,我可以保持连接活动。因此,如果我每 10 秒发送一次空白空间,那么我可以永远保持连接活动状态。不过这很丑陋。响应将有一堆空白区域,然后将显示数据。

下一个问题:

有没有办法发送没有数据的ping?

我尝试发送一个空字符串,但 Go 路由器认为它不发送任何内容。也许是一个空洞的角色?

这与 Node 或您的 Express 应用程序无关。这是由于Cloud Foundry使用的gorouter设置了60秒的超时。

看:

  • https://github.com/cloudfoundry/gorouter/issues/100
  • https://cf-docs.jp-east-https://cf-docs.jp-east-1.paas.cloud.global.fujitsu.com/en/manual/faq/faq/topics/c-faq-14.html

可能有一种方法可以覆盖它:https://docs.cloudfoundry.org/services/route-services.html#timeouts

相关内容

  • 没有找到相关文章

最新更新