0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

systemctlでStart request repeated too quickly.

Posted at

サービスの自動起動失敗

systemctlで自動起動設定しているあるサービスが、ある条件下で Start request repeated too quickly.というエラーメッセージを吐いて起動失敗するという現象が起こりました。で、このエラーでWebを検索すると、サービスのユニットファイルのディレクティブRestartalwaysにしているのが悪い。これをnoとすれば解決、という記事が結構見つかり「えー」と思ったので解決策を記事にしました。

解決策

ユニットファイルの以下のディレクティブを適切に設定する。

[Unit]
StartLimitIntervalSec=<この間に>
StartLimitBurst=<この回数失敗すると起動を諦める>

[Service]
RestartSec=<次に再起動を掛けるまでの秒数>

例えば、

[Unit]
StartLimitIntervalSec=600
StartLimitBurst=9

[Service]
RestartSec=30

など。こうすると10分間で30秒毎に起動を繰り返し、10回失敗したらStart request repeated too quickly.で起動を諦めるということになる。

補足

StartLimitIntervalSecStartLimitBurst * RestartSecよりも十分に大きな値を設定しておくほうが良いようです。例えば上の例だと30秒毎で10回までなのでStartLimitIntervalSecを300秒(5分)にすれば良さそう?ですが、実際には再起動までに30〜45秒かかったりするので(起動するサービスによると思いますが)、StartLimitIntervalSec=300とするとその間には7、8回しか再起動sず、リミットに達しないため延々と再起動を繰り返すことになりました。なので、StartLimitBurst回繰り返すのに絶対そこまでの時間はかからないという時間をStartLimitIntervalSecに設定した方が良いようです。

参考文献

https://man7.org/linux/man-pages/man5/systemd.service.5.html
https://man7.org/linux/man-pages/man5/systemd.unit.5.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?