Ответ 1
Если вы ожидаете запустить вычислительную рабочую нагрузку, которая в основном связана с памятью, а не с процессором, то вам следует использовать только жесткое ограничение, а не мягкое ограничение. Из документов:
Вы должны указать ненулевое целое число для одного или обоих элементов памяти или memoryReservation в определениях контейнеров. Если вы укажете оба, память должна быть больше, чем memoryReservation. Если вы укажете memoryReservation, то это значение будет вычтено из доступных ресурсов памяти для экземпляра контейнера, в который помещен контейнер; в противном случае используется значение памяти.
http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html
Указывая только жесткий предел памяти для ваших задач, вы избегаете исчерпания памяти, так как ECS прекращает помещать задачи в экземпляр, а Docker убивает все контейнеры, которые пытаются преодолеть жесткий предел.
Функция мягкого ограничения памяти предназначена для приложений с ограниченным использованием процессора, где вы хотите зарезервировать небольшой минимум памяти (мягкое ограничение), но допускаете случайные выбросы до жесткого ограничения. В этом типе большой рабочей нагрузки на ЦП вы на самом деле не заботитесь об особой ценности использования памяти для контейнеров, так как контейнеры исчерпают ЦП задолго до того, как они исчерпают память экземпляра, поэтому вы можете размещать задачи на основе Резервирование процессора и ограничение мягкой памяти. В этой настройке жесткий предел является просто отказоустойчивым на случай, если что-то выйдет из-под контроля или произойдет утечка памяти.
Таким образом, в итоге вы должны оценить свою рабочую нагрузку, используя нагрузочные тесты, и посмотреть, имеет ли она тенденцию не хватать сначала ЦП или сначала нехватки памяти. Если вы привязаны к процессору, вы можете использовать мягкое ограничение памяти с дополнительным жестким ограничением в качестве отказоустойчивого. Если вы ограничены памятью, вам нужно будет использовать только жесткий предел без мягкого ограничения.