我有一台快速服务器,在将其发布到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
这很正常。任何建议都表示赞赏。
-------------------- UPDATE --------------------
Francisco Mateo所说的GoRouter确实是个问题,但根据Pivotal的支持:
要更改go路由器的超时,您必须修改go路由器的BOSH清单。在完整的Pivotal Cloud Foundry环境中,这是一个微不足道的变化。但是,我们不允许在Pivotal Web Services上进行此类更改,因为它们会影响多个客户。
显然不可能过度使用它,但如果我不时地发送数据,我可以保持连接存活。因此,如果我每隔10秒发送一个空白空间,那么我可以永久保持连接。但这很丑陋。响应将有一堆空格,然后将显示数据。
下一个问题:
有没有办法发送没有数据的ping?
我已经尝试发送一个空字符串,但Go Router认为它不发送任何内容。也许是一个空角色?
答案 0 :(得分:1)
这与Node或Express应用程序无关。这是因为Cloud Foundry使用的gorouter
设置了超时60秒。
请参阅:
可能有办法覆盖它:https://docs.cloudfoundry.org/services/route-services.html#timeouts