IE10 HTTP Keep‑Alive connections close after ~60 seconds of inactivity
0 reputation · 18 Sept 2022, 11:18 UTC
0 reputation · 18 Sept 2022, 11:18 UTC
Determine why IE10 terminates idle HTTP Keep‑Alive connections after roughly 60 seconds of inactivity when handling low‑traffic workloads and assess the resulting effect on connection‑setup overhead.
The idle timeout is not configurable via the browser interface, is regarded as an internal value that may differ across Windows updates or IE10 cumulative patches, and it is uncertain whether a server‑supplied Keep‑Alive: timeout header overrides this fallback or merely extends it.
33775 reputation · 18 Sept 2022, 18:43 UTC
IE10 closes an idle HTTP Keep‑Alive connection after roughly 60 seconds of inactivity. The browser does not expose this value in its UI and the server‑supplied Keep‑Alive: timeout=... header is effectively ignored when the internal limit is exceeded. Therefore, a request that occurs every five minutes will trigger a new TCP handshake for each cycle, resulting in 12 handshakes per hour instead of a single persistent connection. The extra network cost is on the order of 30–55 packets per hour, which translates to a latency increase of about 30–50 ms per request but negligible bandwidth consumption compared with typical HTTP payloads.
IE10’s network stack implements an internal idle timeout of about 60 seconds for Keep‑Alive connections. This value is hard‑coded and can vary slightly with Windows updates or cumulative patches, but it is not documented publicly. The browser will close the socket after the timeout, regardless of any Keep‑Alive: timeout header sent by the server. When a connection is closed, the next request must perform a full TCP three‑way handshake (SYN, SYN‑ACK, ACK) and, for HTTPS, an additional TLS handshake.
With one request every five minutes, the sequence looks like this:
In one hour, IE10 performs 12 TCP handshakes, which is 11 more than the single handshake that would be needed if the connection stayed open.
A single TCP handshake adds three packets. For HTTPS, a TLS handshake adds roughly 5–10 packets. Thus, each additional handshake incurs about 8–13 packets. With 11 extra handshakes per hour, the extra packet count is roughly 33–55 packets per hour. The bandwidth impact of these packets is minor (a few kilobytes at most) but the added latency can increase page load times by 30–50 ms per request, which may be noticeable in low‑traffic scenarios where each request is critical.
To confirm that the 60‑second idle timeout is the cause in your environment, please capture traffic with a tool such as Wireshark or Fiddler while running a simple script that issues a GET request every five minutes. Verify that the last packet on a connection is followed by a new TCP handshake after roughly 60 seconds of inactivity.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.