В соответствии с документация по использованию услуг при использовании мягких ограничений в задачах ECS возможно использование памяти более 100% (потому что вы не хотите убивать свое приложение жесткими ограничениями). Для загрузки ЦП это всегда верно. У нас есть, например, микросервис с мягким ограничением 500 МБ, и с двумя экземплярами этой задачи он сообщает об использовании памяти 124%. Запуск третьего экземпляра снижает использование до 103%.
Статистика Docker подтверждает эти цифры:
CONTAINER CPU % MEM USAGE / LIMIT MEM %
6f5cd837b3d7 0.64% 670.1 MiB / 3.862 GiB 16.94%
817c573afac7 9.66% 590.3 MiB / 3.862 GiB 14.93%
7a50d1be6e6e 20.34% 427.1 MiB / 3.862 GiB 10.80%
Однако это очень затрудняет автоматическое масштабирование. Например, загрузка ЦП в 400% может означать, что достаточно ЦП, чтобы сэкономить, и мне не нужен новый экземпляр, тогда как использование ЦП на 100% может означать, что все задачи используют свои зарезервированные блоки ЦП, и мне может понадобиться новый экземпляры (либо новые экземпляры EC2, либо новые экземпляры задачи).
Имеет ли это вообще смысл? Каким будет логическое правило ECS для автоматического масштабирования на основе показателей ЦП и памяти при использовании только мягкого ограничения?