説明
プロセス数の制限がないと、異常動作や悪意のあるループが短時間で多くのプロセスを作り、ホストのリソースを枯渇させるおそれがあります。
メモリと CPU の制限だけでは、すべてのリソース枯渇を防げません。プロセス数も制限すると、コンテナー内の暴走を抑えやすくなります。
想定される影響
- 一つのコンテナーが大量のプロセスを生成し、ホストのリソースを枯渇させる可能性があります。
- 同じホストの別サービスにも影響し、障害が連鎖するおそれがあります。
- 異常なプロセス増加を早期に抑えにくくなります。
対処方法
- 各サービスに合う
pids_limitを指定し、-1などの無制限値を避けてください。 - CPU、メモリ、プロセス数の制限を運用基準として合わせて管理してください。
- 実際のワークロードを測定して上限を調整してください。低すぎると正常なプロセスやスレッドも作成できない場合があります。
例
ビルドコンテキストの Dockerfile は省略しています。10 は例なので、アプリケーションのプロセス数とスレッド数に合わせて調整してください。
変更前
yaml
services:
auth:
build:
context: .
mem_limit: 500M
変更後
yaml
services:
auth:
build:
context: .
pids_limit: 10
mem_limit: 500M
補足:
- 変更前: メモリ制限はありますが、この設定にはプロセス数制限がありません。
- 変更後:
pids_limitでプロセス生成を制限します。実際の実行環境で適用状態と正常動作を確認してください。