

# Amazon ECS サービスのスロットルロジック
<a name="service-throttle-logic"></a>

Amazon ECS サービススケジューラには、タスクが繰り返し起動に失敗した場合にタスク起動をスロットリングする保護ロジックが含まれています。これにより、不要なリソースの消費が防止され、コストを削減できるようになります。

サービス内のタスクが `PENDING` 状態から `RUNNING` 状態への移行に失敗し、代わりに `STOPPED` へと直接移行すると、スケジューラは次のようになります。
+ 再起動の試行間隔を段階的に増やす
+ 試行間隔の遅延を最大 27 分まで増加し続ける
+ 問題を通知するサービスイベントメッセージを生成する

**注記**  
最大遅延時間の 27 分は、今後の更新で変更される場合があります。

スロットリングがアクティブ化されると、次のサービスイベントメッセージが表示されます。

```
(service service-name) is unable to consistently start tasks successfully.
```

スロットリングロジックの重要な特性
+ サービスによって再試行が無期限に継続される
+ 唯一の変更は、再起動間の時間が増加されること
+ ユーザーが設定可能なパラメータがない

## スロットリング問題の解決
<a name="resolving-throttling"></a>

スロットリングを解決するには、次の操作を行います。
+ 新しいタスク定義を使用するようにサービスを更新すると、サービスは即時に通常のスロットリングされていないオペレーションに戻ります。詳細については、「[Amazon ECS サービスを更新する](update-service-console-v2.md)」を参照してください。
+ タスク失敗の根本的な原因に対処します。

スロットリングをトリガーするタスク障害によくある原因は、次のとおりです。
+ 不十分なクラスターリソース (ポート、メモリ、CPU)
  + [リソースサービスのイベントメッセージが不十分](service-event-messages-list.md#service-event-messages-1)と表示されます
+ コンテナイメージのプル失敗
  + 無効なイメージ名、タグ、不十分なアクセス許可が原因で発生する可能性があります
  + [Amazon ECS の停止したタスクのエラーを表示する](stopped-task-errors.md) の `CannotPullContainerError` が発生する
+ ディスク容量の不足
  + [タスク停止エラー](stopped-task-errors.md)の `CannotCreateContainerError` が発生する
  + 解決手順については、「[Amazon ECS の Docker `API error (500): devmapper` のトラブルシューティング](CannotCreateContainerError.md)」を参照してください。

**重要**  
次のシナリオでは、スロットルロジックはトリガーされません。  
`RUNNING` 状態に達した後に停止するタスク
Elastic Load Balancing のヘルスチェックの失敗により、タスクが停止しました
`RUNNING` 状態に達した後に、コンテナコマンドがゼロ以外のコードで終了するタスク