説明
再起動ポリシーは自動復旧に役立ちますが、回数が過剰だったり不統一だったりすると障害対応を複雑にする場合があります。on-failure はプロセスが 0 以外の終了コードで終了したときに適用され、unhealthy 状態だけでは動作しません。
on-failure:5 のように再試行回数を制限できます。5 は上限の例であり、すべてのサービスで 10 より安全という意味ではありません。無制限や過剰な再起動は障害を見えにくくし、少なすぎると一時的なエラーでもサービスが停止する場合があります。
想定される影響
- 障害が続いていても再起動を繰り返し、原因調査が遅れる場合があります。
- 再試行が少なすぎると、一時的なエラーでもサービスが停止する場合があります。
- サービスごとの基準が不統一だと、監視や運用対応が複雑になります。
対処方法
restart: on-failure:5など、復旧要件に合う有限の再試行回数を設定してください。deploy.restart_policy.max_attemptsを使う場合は、windowによる失敗の集計方法も確認してください。二つの設定の回数を機械的に同じ意味で扱わないでください。- 重要度と復旧特性を考慮しながらチームの基準を統一し、繰り返す障害を監視してください。
例
二つの例は再試行上限を比較しています。実際の復旧要件に合う値を選んでください。
変更前
yaml
services:
customer:
image: whoa/hello
restart: on-failure:10
変更後
yaml
services:
customer:
image: whoa/hello
restart: on-failure:5
補足:
- 変更前: 異常終了後に最大 10 回再試行します。10 自体が危険という意味ではなく、実際の復旧要件との比較が必要です。
- 変更後: 再試行上限を 5 回に減らします。一時的なエラーからの復旧に必要な試行まで妨げないかテストしてください。