Docker ComposeのCPU使用上限が未設定

サービスの負荷に合うCPU上限を指定してください。

説明

CPU使用上限がないと、コンテナーが利用可能なCPU容量を過剰に消費する場合があります。CPUの予約量と最大使用量の制限は別の設定です。

想定される影響

負荷の高いサービスによって、同じホストの他のサービスが遅延したり応答できなくなったりするおそれがあります。

対処方法

deploy.resources.limits.cpusなど、実行環境が対応するCPU制限を設定し、実際に適用されることを確認してください。負荷試験で必要なスループットと上限を調整してください。

例

CPU上限を0.3、予約量を0.1にする例です。example/appを実際のイメージに置き換え、利用するCompose実行環境のdeploy対応を確認してください。

変更前

yaml
version: "3.7"
services:
  app:
    image: example/app
    deploy:
      resources:
        limits:
          memory: 256M
        reservations:
          cpus: "0.1"

変更後

yaml
version: "3.7"
services:
  app:
    image: example/app
    deploy:
      resources:
        limits:
          cpus: "0.3"
          memory: 256M
        reservations:
          cpus: "0.1"
          memory: 128M

参考資料