Uncategorized

php-fpm が落ちても⾃動復旧させる方法

かに
目的説明
① php-fpm が落ちても⾃動復旧させるRestart=always で、マスタープロセスがクラッシュ・強制終了・OOM Kill された場合でも systemd が 5 秒後に再起動します。
② 5 秒のクールダウンを設けるRestartSec=5 により、連続クラッシュ時の “無限高速再起動” を防ぎます。
③ OOM Kill も拾うOOMPolicy=restart で、メモリ不足による強制終了(OOM Killer)時も自動復帰します。
④ パッケージ更新で上書きされない/etc/systemd/system/php-fpm.service.d/ 以下に置く “ドロップイン” は、RPM/DEB が配布する元の unit ファイルが更新されても残ります。
⑤ 元の unit を汚さない/usr/lib/systemd/system/php-fpm.service を直接編集せずに済むため、管理が簡単 & 差分が明確です。

override 設定を作成

bashコピーする編集する# ① ディレクトリを作成(初回のみ)

sudo mkdir -p /etc/systemd/system/php-fpm.service.d

# ② override.conf を作成
sudo tee /etc/systemd/system/php-fpm.service.d/override.conf <<'EOF'
[Service]
# プロセスが停止したら必ず再起動
Restart=always
# 再起動まで 5 秒待つ
RestartSec=5
# メモリ不足で OOM Kill された場合も再起動
OOMPolicy=restart
EOF

反映してテスト
sudo systemctl daemon-reload   # Unit を再読み込み
sudo systemctl restart php-fpm # 設定が効いた状態で再起動
sudo systemctl status php-fpm  # active (running) を確認

疑似クラッシュさせてみる

(子プロセスを kill して自動復旧するか確認)

pgrep -f "php-fpm: pool" | head -n1 | xargs sudo kill -9
sleep 6
systemctl status php-fpm | grep Active   # → running になっていれば成功

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

記事URLをコピーしました