Golang如何使用keepalive处理正常关闭

时间:2014-09-18 18:49:41

标签: http tcp go keep-alive

我已经构建了一个可以在多个节点之间取得平衡的代理服务器。 我还说它可以在零停机时重新加载。问题是大多数节点都保持活着 连接,我不知道如何处理这些。有时服务器无法关闭1或2个不会关闭的打开连接。

我的第一个意见是在关机时设置超时,但这并不能保证每个连接都能正确终止。我认为下载需要几分钟才能完成。

在这种情况下,任何人都可以给我一些好的建议吗?

1 个答案:

答案 0 :(得分:2)

您拥有的一个选项是最初只关闭侦听套接字,并在退出之前等待活动连接。

释放侦听套接字后,您的新进程可以自由启动并接受新连接。然后,旧进程可以继续运行,直到所有连接都正常关闭(这是HAProxy重新加载的方式),或者如果您选择,则直到某个更长的超时。