The maximum number of outstanding persistent connections to different Web servers seems to be 15.
Persistent connections are not timed out by Navigator. Rather, all idling persistent connections seem to be put in a queue. When the browser connects to a different Web server and needs to open new persistent connections to the server, the idling connections are killed by the browser using some form of LRU algorithm.
Internet Explorer times out its persistent connections after 60 seconds. When Explorer goes to a different Web server, the persistent connections to the previous Web server are left around until they are timed out.
Browser caches are turned off. In Navigator, we set memory and file cache sizes to 0. In Internet Explorer, we start a new Web server on a different port address from time to time to prevent cache hits during the experiments.
Web server: We use a custom Web server "httperf-server" that supports persistent connection and request pipeline. The server never closes the persistent connections with the clients, so that we can observe the clients' behavior. In addition, the server can be suspended from time to time to test the clients' reactions. The Web server reports activities from the client.
Artificial Web page construction: We artificially construct Web pages that are HTML pages with different number of embedded images. Our custom Web server also returns real HTML pages from our home directory.
Web proxy: We also use a custom Web proxy to test the clients' interaction with proxies. The proxy also supports persistent connection and request pipelining, and does not close persistent connections with the clients.
Our servers have been instrumented to record the number of requests serviced on each persistent connection. We have seen the number as high as 35 in our experiments. However, we also count the number of concurrent requests on a connection and we have never seen the number bigger than 1.
Internet Explorer, on the other hand, closes a persistent connection if it has been idle for 1 minute.
Internet Explorer: We find that Internet Explorer typically establishs 2 persistent connections to each Web server. Even if there are multiple IE windows fetching HTML pages from the same server, there are usually only 2 persistent connections to the server.
If the browser is switched to a different Web server, the persistent connections to the previous server are kept around until they are timed out. As of now we do not know whether IE has a hard limit on the total number of live persistent connections to the Internet.
In our experiments we did encounter a bug (or feature) in IE. It seems to forget to close some persistent connection at some point. The connection was left idle for over 20 minutes. Unfortunately we were not able to repeat the bug.
Netscape Navigator: We find that Netscape will use a maximum of 6 concurrent persistent connections to a Web server. If there are fewer embedded objects, fewer connections are used.
However, if there are multiple Navigator windows to the same Web server, or if there are multiple frames in the HTML page sent back by the Web server, then up to 13 or 15 concurrent connections may be used.
The connections are kept around and never timed out. However, when the browser switches to different Web servers and there is no proxy involved, it uses a seemingly LRU algorithm to close idle persistent connections. The total maximum number of persistent connections seems to be either 13 or 15.
We are not quite sure whether the hard limit is 13 or 15. It seems that the number of persistent connections in its LRU queue is 13. However, we were able to establish 15 connections once by launching three browser windows pointing at three different different Web servers. After the two browser windows tied up 12 persistent connections, the third one was only able to issue 3 connections to its Web server, at which point, it hang!
If all connections with the proxy are busy, Netscape Navigator will establish more persistent connections, subject to the 15-connection limit. We do not understand clearly the behavior of Internet Explorer at this point. Sometimes it adds more connections, sometimes it waits for the current connections to become idle.
Zhe Wang (email@example.com) and Pei Cao (firstname.lastname@example.org)