Назад | Перейти на главную страницу

Почему моя служба перезапускалась каждые 90 секунд?

Я работаю с Ubuntu Server 16.04.

Вот .service файл:

[Unit]
Description=NoDescpt

[Service]
ExecStart=/home/git/cmd/daphnei
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all

[Install]
WantedBy=multi-user.target

И связанный сценарий /home/git/cmd/daphnei:

#!/bin/bash
cd /home/git/hsfzmun/server
/home/git/virtualenvs/hsfzmun/bin/daphne -b 0.0.0.0 -p 8001 -v2 config.asgi:channel_layer

Что меня смутило, так это то, что служба перезапускается каждые 90 секунд, но я не могу понять почему.


Я обнаружил, что статус службы всегда activating, что значит systemd не знает, что служба запущена. Однако сценарий сделал начать, потому что я могу посетить свой веб-сайт. Так что в этом плохого?

Поскольку не было заявлено, что он будет готов в течение 90 секунд (время ожидания запуска по умолчанию), systemd решил, что ваша служба не работает. Неудачные службы убивают все.

Из-за Restart=always, ваша отказавшая служба перезапускается, и цикл повторяется.

Также, Restart=on-failure может быть лучше в этом случае.

Ты используешь

Type=Notify

в вашем модульном файле. Это означает, что приложение должно уведомить systemd, когда оно готово к серверу, через sd-уведомление Systemd, вероятно, не получает уведомления от вашего приложения и перезапускает его.

Если ваше приложение не отправляет уведомление в systemd, вам следует обновить соответствующую строку до

Type=simple 

Другой вариант - проверить, daphne может отправлять уведомление в systemd и включать уведомление.

Проверьте документация systemd по уведомлению для более подробной информации о Type=notify