OS起動時に Elasticsearch などの「重い」サービスがタイムアウトで自動起動に失敗するときの対処法

前提条件

Ubuntu です。

エラー例

以下のようにタイムアウトでエラーになります.

$ sudo service elasticsearch status
● elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
     Active: failed (Result: timeout) since Sun 2021-08-29 15:31:13 JST; 19s ago
       Docs: https://www.elastic.co
    Process: 1990 ExecStart=/usr/share/elasticsearch/bin/systemd-entrypoint -p ${PID_DIR}/elastic>
   Main PID: 1990 (code=exited, status=143)

結論

サービス開始スクリプト中の TimeoutStartSec の値を十分に大きくする。

Elasticsearch の例です。/lib/systemd/system/elasticsearch.service を編集します。

# Allow a slow startup before the systemd notifier module kicks in to extend the timeout
# TimeoutStartSec=75
TimeoutStartSec=300

編集したあとはリロードします。

$ sudo systemctl daemon-reload

これで再起動後に十分な時間をもってサービスが起動するはずです。

Powered by はてなブログ