Ubuntu

為什麼我的服務每 90 秒重啟一次?

  • February 24, 2017

我正在使用 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 秒重新啟動一次,但我不知道為什麼。


我發現服務的狀態是 always activating,表示systemd不知道服務已經啟動。但是腳本確實啟動了,因為我可以訪問我的網站。那麼它有什麼問題呢?

您正在使用

Type=Notify

在你的單位文件中。這意味著應用程序應該在準備好通過sd-notify服務時通知 systemd Systemd 可能沒有收到來自您的應用程序的通知並重新啟動它。

除非您的應用程序正在向 systemd 發送通知,否則您應該將相應的行更新為

Type=simple 

其他選項是檢查是否daphne可以向 systemd 發送通知並打開通知。

檢查有關通知的 systemd 文件以獲取更多詳細資訊Type=notify

由於沒有說明它在 90 秒內準備好(預設啟動超時),因此 systemd 已確定您的服務已失敗。失敗的服務讓一切都被扼殺。

由於Restart=always,您的失敗服務將重新啟動,並且循環重複。

此外,Restart=on-failure在這種情況下可能會更好。

引用自:https://serverfault.com/questions/834728