优雅地终止Node.js中的保持活动连接

时间:2015-03-13 19:48:28

标签: node.js sockets keep-alive cloudflare

Cloudflare现在重用几个保持活动连接来代理传入连接,这有利于资源使用,但是让干净地将工作者与它们断开连接会非常麻烦。在他们这样做之前,您可以简单地从负载均衡器集中删除一个工作人员,并且不会向该工作人员发送新请求,同时将继续处理现有请求。现在他们使用keep-alives,他们不需要启动新连接,因此从负载均衡器队列中删除工作人员不再阻止通过这些现有的保持活动连接进入的新请求。

我可以在给定超时后在每个连接上调用connection.destroy(),但这可能会中断有效请求。我也可以在每次res.end调用后调用它,但由于请求共享连接,一个请求可能会终止另一个请求正在使用的连接。这同样适用于设置低超时,例如connection.setTimeout(1000)

是否有一种很好的方法可以拒绝来自保持活动套接字的其他请求,同时允许它完成所有当前请求?能够以某种方式简单地通知cloudflare将不再用于传入请求的套接字会很好,但我不确定是否可行。

我觉得某种半开放式套接字可以解决这个问题,但执行它似乎有点棘手。

0 个答案:

没有答案