Web Debug

Fix broken web applications, from servers to clients.

Browser Connection Limit

HTTP 1.1 RFC 2616


As RFC2616 recommended,

Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion.

This means the client should control the connections on a per host basis. If  a website gets resource from multiple hosts (www.host1.com, www.host2.com, www.host3.com ..), the client can open 2 connections for each host name.

<!--more-->

Yahoo website performance rules "Minimize Http Requests" are also recommending website should minimize http requests to server as connections limit might caused resource downloading pending on get connections.

Browser Configuration


Earlier versions of browsers strictly followed this standards and soon they find 2 connections per host are not efficient enough for modern web applications. This link provides testing result for connection limits on different versions of browsers.

connections

Different browsers has different settings to control the this limit.

IE can refer to KB28242, this setting applies to IE6 - IE9, while IE10/11 can use the following registry key to set the limit, range from 2-128.

HKLM\SOFTWARE<b>Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATUREMAXCONNECTIONSPERSERVER

In Firefox these values are controlled by the network.http.max-persistent-connections-per-server and network.http.max-connections-per-server settings in about:config.

For Chrome it looks this feature are still <a href="http://code.google.com/p/chromium/issues/detail?id=85323" target="blank">under discussion.

Effect of Proxies


Note that if you’re behind a proxy (at work, etc.) your download characteristics change. If web clients behind a proxy issued too many simultaneous requests an intelligent web server might interpret that as a DoS attack and block that IP address. Browser developers are aware of this issue and throttle back the number of open connections.

In Firefox the network.http.max-persistent-connections-per-proxy setting has a default value of 4. If you try the Max Connections test page while behind a proxy it loads painfully slowly opening no more than 4 connections at a time to download 180 images. IE8 drops back to 2 connections per server when it’s behind a proxy, so loading the Max Connections test page shows an upperbound of 60 open connections. Keep this in mind if you’re comparing notes with others – if you’re at home and they’re at work you might be seeing different behavior because of a proxy in the middle.

Testing


Steve Souders provides a max-connection testing page to test this behavior.

http://stevesouders.com/hpws/max-connections.php

I created a testing page for clients to test what is the connection limit for clients.

http://webdebug.net/toolbox/max-connections.html

Fork me on GitHub