Go 언어로 작성된 간단한 서비스가 있습니다. 일부 비즈니스 로직을 사용하여 웹 서버를 시작합니다. 이제 서비스를 다시 로드해야 합니다. 이것은 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