Operations 5 min read

Why a TLS Handshake Can Saturate 100Mbps Uplink and How to Cut Bandwidth by 70%

A high‑concurrency data‑collection service quickly filled a 100 Mbps uplink because each GET request incurred a 1.68 KB TLS handshake, but switching to plain HTTP or enabling Keep‑Alive can dramatically reduce per‑request size and server load, saving up to 70% bandwidth.

ITPUB
ITPUB
ITPUB
Why a TLS Handshake Can Saturate 100Mbps Uplink and How to Cut Bandwidth by 70%

Origin

A high‑concurrency data‑collection service went live and immediately saturated a 100 Mbps uplink. Since the dedicated line was used only by this service, the cause was clear. Surprisingly, each simple GET request consumed 1.68 KB, mainly due to the TLS handshake.

The bandwidth required can be calculated as: 1.68*20000/1024*8=262.5mbps Thus the 100 Mbps uplink was easily filled.

What Is the TLS Handshake and Why Is It So Large?

HTTPS stands for HTTP over TLS. Establishing a new TCP connection typically requires a full TLS handshake, during which the client and server exchange certificates, public keys, supported cipher suites, TLS version, random numbers, and a pre‑master secret. These elements consume significant bytes, CPU, and time.

Client and server random numbers

Supported cipher suites and TLS version

Server's digital certificate (including public key)

Pre‑Master Secret for symmetric key generation

This process not only adds latency but also consumes bandwidth and CPU resources.

Rough Solution: Use Plain HTTP

By switching the request protocol from HTTPS to HTTP, the TLS handshake is eliminated, reducing the request size from 1.68 KB to about 0.4 KB—a 70% reduction. The screenshots show the request headers before and after the change, confirming the absence of the TLS handshake.

In scenarios where HTTPS is not mandatory, using HTTP can significantly save bandwidth and lower server load under high concurrency.

When HTTPS Is Required: Enable Keep‑Alive

If HTTPS must be used, adding the header Connection: keep-alive enables persistent connections. With Keep‑Alive, multiple HTTPS requests can reuse the same TCP connection, avoiding repeated full TLS handshakes after the first one. This is especially effective for high‑concurrency workloads.

Note that Keep‑Alive connections have timeout limits: Nginx defaults to 75 seconds, while Apache typically defaults to 5 seconds. Exceeding the timeout closes the connection, requiring a new handshake for subsequent requests.

ps: If your crawler uses many proxy IPs, Keep‑Alive may have limited effect—using plain HTTP is still the best option.
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Keep-AliveTLSHTTPSnetwork performancebandwidth optimization
ITPUB
Written by

ITPUB

Official ITPUB account sharing technical insights, community news, and exciting events.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.