На hightload проекте используется fasthttp. Всё хорошо, но у него нет пула коннектов (не путать с sync.Pool) что приводит к следующей проблеме: когда сервер надо перезапустить надо ждать пока все idle keep-alive коннекты
сами не закроются.
По SLA (требование) на сервисе idle keep-alive коннекта - 1 минута. Как результат - безопасная перезагрузка сервера занимает 1 минуту. Также надо "проряжать" коннекты по требованию - отстреливать только keep-alive которые в idle.
У родного net/http есть пул коннектов на основе map. Однако map плохо работает с GC, об этом
писали как-то раз ребята из Discord, да и сам автор fasthttp
нелестно отзывается о map как о не дружелюбном к GC объекте. То есть пул коннектов нужен не на базе map, а, видимо, на неком списке.
С ходу не нашел каких либо реализаций пул коннектов. Нашел абстрактный
go-commons-pool для любых объектов.
Кто-то заморачивался с пулом коннектов? Можете что-нибудь посоветовать?
PS сам автор fasthttp
рекомендует выставить ReadTimeout чтобы завершать keep-alive , но изменение ReadTimeout не применяется уже на существующие idle keep-alive коннекты.