Intereting Posts
Можно ли создать образ докеры из Ubuntu ISO в Windows в автономном режиме? Проблемы с размещением докционированной базы данных Postgres OLTP только для чтения Как запустить два приложения python в докере Как сделать баланс нагрузки обратной линии прокси-сервера nginx между двумя контейнерами докеров? Dockerfile: вывод инструкции RUN в переменную Как установить файл спецификаций для gcc в контейнере Docker Как выполнить команду в уже существующем контейнере Docker? У контейнеров Docker есть один Python GIL? запускать несколько контейнеров докеров с помощью одного сценария оболочки командной строки (без компоновки докеров) Как установить 2 контейнера Docker Kafka в Windows 10 Обновление k8s ConfigMap или Secret без удаления существующего Как назначить порт хоста порта контейнера, используя докер, если контейнер уже создан и запущен? Пройдитесь по Vmware и перейдите в Docker, как правильно настроить Dockerfile или cointainer? Как сохранить контейнер докеров, используя имя IMAGE? Обратный прокси-сервер nginx и Express Server возвращают 502

Странное поведение работников сельдерея в контейнере докеры ecs

У нас есть несколько экземпляров c4.large ecs, каждый из которых имеет один контейнер для докеров с работающими работниками сельдерея. Время от времени мы видим, что рабочие убиты системой

 WorkerLostError('Worker exited prematurely: signal 9 (SIGKILL).',) 

В dmesg я вижу следующую строку:

 Memory cgroup out of memory: Kill process 27886 (celery) score 112 or sacrifice child 

Насколько я понимаю, OOM отвечает за это

Но я также вижу эту строку в dmesg :

 memory: usage 964544kB, limit 1048576kB, failcnt 246284 

Который говорит, что существует ограничение в 1 ГБ, но я не понимаю, в чем причина этого предела, поскольку free -m говорит

  total used free shared buffers cached Mem: 3768 3461 307 0 140 2211 -/+ buffers/cache: 1108 2659 Swap: 0 0 0 

Другим важным моментом является то, что у нас есть обычный экземпляр ec2 c4.large , где у нас есть сельдерей, работающий с таким же количеством рабочих (или даже больше), но без докеров, и мы никогда не видели эту проблему на этом экземпляре. Так что я думаю, что это может быть какая-то докерная накладная, которая потребляет память, но, может быть, я чего-то пропущу?

благодаря

free показывает общий объем памяти независимо от пределов группы и доступной памяти для контейнера, поэтому вы видите запутанные номера.

Ограничение cgroup может быть указано для контейнера докера через командную строку или в случае амазонки через определение задачи. Проверьте параметр memory .