Как динамически распределять память для нескольких docker контейнеров AWS Elasti c Среда Beanstalk, работающих Java приложений - PullRequest
8 голосов
/ 16 января 2020

Я хочу выжать каждую возможную унцию использования со свободного уровня beanstalk уровня elasti c.

Мой бэкэнд построен как набор микросервисов (с использованием ktor). У меня есть 5 микросервисов , если быть точным. Все они докеризированы, и я пытаюсь запустить их на одном крошечном экземпляре t2.micro (free) elasti c beanstalk с multi- docker image окружение

Java, являющееся java, любит простаивать около 200 МБ ОЗУ на каждый контейнер docker даже для самого простого микросервиса.

Итак, t2.micro дает вам 1 ГБ ОЗУ. У меня есть 5 микросервисных docker контейнеров, каждый из которых требует не менее 200 МБ = очень близко.

Проблема в том, что память почти всегда почти постоянно находится на 100%.

Итак, есть ли способ динамически распределять память для контейнеров docker в зависимости от того, сколько свободного места и насколько отчаянно это нужно одному контейнеру?

Скажем, один контейнер выполняет тяжелую работу, в то время как остальные в основном заняты В режиме ожидания я хочу направить часть оперативной памяти к контейнеру, выполняющему тяжелую задачу, и после ее завершения go вернуться к равному распределению ОЗУ для контейнера.

Есть ли способ сделать это?

1 Ответ

1 голос
/ 30 января 2020

Вы можете использовать docker update --memory-reservation xxx <container> для изменения мягкого ограничения выделения памяти для контейнера во время его работы. Docker осторожно вытянет контейнеры sh до их мягких пределов, когда общая память будет низкой. Таким образом, вы можете установить мягкие ограничения, скажем, 150 МБ для всех ваших контейнеров, а затем увеличить один из них, когда вы знаете, что ему нужно выполнить дополнительную работу.

Документация docker по мягким ограничениям не это здорово, документация ядра для CGroup Memory объясняет это лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...