Очевидно, что предоставленное мной решение, похоже, не помогло человеку, который задал вопрос, но оно могло бы помочь кому-то еще, кто тут наткнулся. Ниже приведены две вещи, которые я предложил и которые могут вызывать проблему.
Предложения 1
Я предполагаю, что вы используете официальный образ ruby docker, и при запуске контейнера ruby работает как PID 1
внутри контейнера.
Если ruby работает как PID 1
, то OOM killer не сможет его убить, вызывая все проблемы, которые вы видите.
Чтобы решить эту проблему, вам нужно убедиться, что правильный init
процесс выполняется как PID 1
.
Docker 1.25 и выше имеет опцию --init
для команды docker run
. Эта опция гарантирует, что правильный init
справится с задачами PID 1
, а также передаст все СИГНАЛЫ в ваше приложение ruby.
https://docs.docker.com/engine/reference/commandline/run/
- init API 1.25+ Запустить init внутри контейнера, который пересылает сигналы и перезапускает процессы
Вот что Docker использует как init
https://github.com/krallin/tini
Предложение 2
Существует известная проблема с Amazon Linux AMI, подробности можно найти по следующей ссылке https://github.com/aws/amazon-ecs-agent/issues/794. На момент написания статьи я не уверен, была ли проблема с AMI исправлена или нет.
Так что попробуйте другой AMI, как предложено в этой теме, скажем Ubuntu AMI.