HTTP-клиент в Go переиспользует соединения (Transport с пулом). Один клиент на приложение или на пул воркеров; не создавать клиент на каждый запрос. Настройки: MaxIdleConnsPerHost, IdleConnTimeout. При обращении к одному бэкенду через балансировщик пул на стороне Go ограничивает число соединений и снижает накладные расходы на TCP/TLS handshake.
client := &http.Client{
Transport: &http.Transport{
MaxIdleConnsPerHost: 100,
MaxConnsPerHost: 100,
},
}