Creating a new TCP/TLS connection for every request is slow and it adds load on both sides. For high-traffic services calling a small set of upstreams, keep-alive reduces latency and CPU dramatically. I configure an https.Agent with sensible maxSockets and a timeout, then reuse it across requests. The gotcha is that keep-alive can mask DNS changes, so idle timeouts should be reasonable and you shouldn’t cache connections forever. This isn’t a micro-optimization—I’ve seen it reduce p95 latency meaningfully when a service makes multiple downstream calls per request. It’s also a nice ‘free’ win once timeouts and circuit breakers are in place.