Systemd 和不必要的进程重新启动

Systemd 和不必要的进程重新启动

我有一个用 Go 语言编写的简单服务。它启动带有一些业务逻辑的 Web 服务器。现在我们必须重新加载该服务。这是kill -HUP 信号。通过该信号,初始进程分叉并为新进程中的连接提供服务。一切都很好,但我们想使用 systemd 来管理这项服务。看起来 systemd 认为这是失败(初始进程死亡)并且在重新加载进程重新启动后:

Aug 11 06:19:12 developmetn systemd[1]: my-proxy.service: Failed with result 'timeout'.
Aug 11 06:19:12 developmetn systemd[1]: Failed to start my-proxy image proxy
Aug 11 06:19:15 developmetn systemd[1]: my-proxy.service: Scheduled restart job, restart counter is at 508.
Aug 11 06:19:15 developmetn systemd[1]: Stopped my-proxy image proxy.
Aug 11 06:19:15 developmetn systemd[1]: Starting my-proxy image proxy...

显然,这会扼杀在重新加载期间为 100% 连接提供服务的想法。如何避免这种情况?我们尝试了类型=叉子选项,但 systemctl reload my-proxy.service 命令执行很长时间。

[Unit]
Description=image proxy
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/my-proxy &
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
WorkingDirectory=/etc/my-proxy/
LimitNOFILE=infinity
RestartSec=3

[Install]
WantedBy=multi-user.target

相关内容