В прошлом мы уже обсуждали зомби-ресурсы в облаке, теперь пришло время зомби-процессов — и не где-нибудь, а внутри Docker-контейнера с Go-приложением.
Савас Вендова делится кейсом, в котором его сервер стабильно падал с ошибкой
Redis Pub/Sub
из-за проблем с утечкой памяти. Причиной были зомби: дочерние процессы Node.js не завершались корректно даже после os.Process.Kill()
в Go. А поскольку приложение запускалось как PID 1 внутри Docker, оно не собирало съедающие ресурсы зомби-процессы.Проблему решили с помощью Tini — init-решения для контейнеров. Оно перехватывает SIGCHLD и корректно завершает все процессы. Подробный разбор кейса с примерами читаем здесь.
Желаем всем, кто отдыхает, хороших выходных, а тем, кто дежурит — спокойных смен без серьёзных алертов и зомби!
#devops #docker #go #zombieprocesses
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3🤔1