Уверен, что я увидел сервер с открытым исходным кодом, написанный на Go, который смог перезапустить и открыть соединения.Изящный перезапуск для открытия соединений
Я не могу найти его, чтобы узнать эту технику.
Я знаю, что apache.httpd имеет apachectl graceful
, который перезапускает и сохраняет соединения открытыми.
Как это делается в целом и в Go?
Я думал, что он должен иметь вилку и 1 выход, 2 exec (новое приложение) и ссылки на Fd.
Но в Go я могу найти только ForkExec
функция. Я думаю, Fork
не требуется. Также syscall
пакет не очень хорошо документирован.
Не грациозные перезагружается просто раскрутить новый сервер для обработки всех новых входящих соединений, но сохранить старый сервер жив, пока он не закончит, обслуживающими существующие соединения? Он не пытается передать существующие подключения к новому серверу. –
Если вы выполняете программу, то новая программа может совместно использовать открытые файлы со старым. – Artem