我确定我看到一些用Go编写的开源服务器,它能够重新启动并保持连接处于打开状态。平稳重启以保持连接开放
我无法找到它来学习该技术。
我知道apache.httpd有apachectl graceful
重新启动并保持连接打开。
它在一般情况下和Go中如何实现?
我认为它必须分叉和1退出,2执行(新的应用程序)和Fd链接连接。
但是在Go中我只能找到ForkExec
函数。我认为Fork
是必需的。 也syscall
包没有很好的文件。
我确定我看到一些用Go编写的开源服务器,它能够重新启动并保持连接处于打开状态。平稳重启以保持连接开放
我无法找到它来学习该技术。
我知道apache.httpd有apachectl graceful
重新启动并保持连接打开。
它在一般情况下和Go中如何实现?
我认为它必须分叉和1退出,2执行(新的应用程序)和Fd链接连接。
但是在Go中我只能找到ForkExec
函数。我认为Fork
是必需的。 也syscall
包没有很好的文件。
CloseOnExec可能会有帮助,
首先。链接有404个链接到github。但是第二个链接为TCP侦听器重新生存下来提供了解决方案。我相信类似的技术可以应用于打开的TCP套接字。谢谢! – Artem 2013-02-13 08:04:43
不要优雅重启只是旋转起来的新的服务器来处理所有新进入的连接,但保留旧的服务器的生命,直到它完成维修现有的连接?它不会尝试将现有连接交给新的服务器请求。 – 2013-02-12 23:20:45
如果您执行程序,则新程序可能会与旧程序共享打开的文件。 – Artem 2013-02-13 08:08:30