Инженеры обнаружили цепочку из шести ошибок, приводивших к сбоям в работе инфраструктуры Kafka при сетевых работах. Проблемы вызывали сегфолты, утечки сокетов и резкие скачки TCP-соединений.

Критический баг в glibc, существующий с 2015 года, приводил к падению процессов. Ошибка возникала, если повторная инициализация резолвера прерывалась из-за нехватки ресурсов, оставляя состояние системы поврежденным.

Расследование выявило утечку UDP-сокетов в библиотеке сокетов при сбоях операции bind из-за исчерпания эфемерных портов. Лимит портов на хостах составляет 28 232 единицы.

Регрессия в библиотеке конкурентности Async привела к тому, что попытки DNS-запросов перестали прерываться по таймауту. Клиент Kafka также дублировал параллельные запросы, создавая избыточную нагрузку.

Ошибка при миграции запускалки задач привела к снижению лимита файловых дескрипторов в восемь раз. Это вызвало дефицит ресурсов, который спровоцировал проявление скрытых багов в других компонентах.

Команда воспроизвела сбои, ограничив число дескрипторов и принудительно используя один поток. Исправление для бага в glibc уже принято разработчиками и включено в версию 2.44.