Типичный программист | IT, программирование, разработка, ИИ
IT и технологии · 4 сентября 2026 г.
Два простаивающих соединения на хост по умолчанию разгоняют хвост задержек в Go-сервисе — 4 сентября 2026 г. в 19:31:24.604
Два простаивающих соединения на хост по умолчанию разгоняют хвост задержек в Go-сервисе Каждый сервис на Go, который ходит в соседний, использует http.Transport, даже не вспоминая о нём. У MaxIdleConnsPerHost значение по умолчанию равно двум, и это самая частая ошибка конфигурации в парках микросервисов на Go. Арифметика простая. Сервис на 500 запросах в секунду с медианой 20 мс держит около десяти одновременных соединений. Восемь закрываются после каждого запроса, и каждый следующий поход платит за рукопожатие TCP, а на TLS ещё и за проверку сертификата. Ошибок в логах нет, всё выходит наружу только хвостом времени ответа. Вторая ловушка в дозвоне: при пустом пуле горутины уходят звонить разом, и без MaxConnsPerHost это выжигает дескрипторы и порты. Поставите лимит, получите очередь, и отвал по дедлайну будет выглядеть как таймаут соседа. Открывайте материал с конфигом транспорта и смотрите, как этого избежать. #golang

