Тема: Memory out when used with docker
Загалом таке:
є 10 docker контейнерів, які запущені на одній машині:
- 1 контейнер - django app connected ( nginx -> guincorn -> django)
- решта 8 - django management command (тобто теж django app). Обробка черг, кастомне рішення, не celery, rq і тд.
Проблема в тому, що контейнери періодично вижирають пам'ять і docker успішно прибиває процеси, коли пам'ять виходить за обмеження (встановлено через docker-compose mem_limit). Все би нічого: нехай перезавантажуються коли треба, але коли docker вбиває, він не шле ані SIGTERM, SIGINT, SIGKILL (?), відповідно не можна прохендлити gracefull shutdown (а ці обробники черг реєструються в redis - ну і відповідно потім каша)
Якщо прогнати процеси з використанням якогось memory_profiler, то жодного скачка па'мяті немає, все в міру потреб 80-120мб, і найголовніше, коли даних для обробки немає пам'ять нормально вивільняється. Але в докері - просто перманентно росте. Звідси висновок, що неправильно налаштовано docker.
Куди копати?
P.S. docker, docker-compose, python, всі лібки на проекті оновив до останньої версії