W3C home > Mailing lists > Public > ietf-http-wg-old@w3.org > May to August 1995

Re: HTTP Session Extension draft

From: Chuck Shotton <cshotton@biap.com>
Date: Thu, 6 Jul 1995 13:26:47 -0500
Message-Id: <v02120d02ac21d6eccd15@[198.64.246.22]>
To: Jeffrey Mogul <mogul@pa.dec.com>, Alex Hopmann <hopmann@holonet.net>
Cc: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
At 10:31 AM 7/6/95, Jeffrey Mogul wrote:
>    Well the first thing to keep in mind is that those same busy servers
>    are keeping 1000 records for closed connections that are in the
>    time-wait state.
>
>Not necessarily.  My simulations, using traces from several busy servers,
>show that with certain choices of server parameters, the peak number of
>TIME_WAIT entries is well below 1000.  That is, the use of sessions
>can actually reduce the number of TIME_WAIT entries by an order of
>magnitude (compared to non-session HTTP).  More details in my SIGCOMM
>paper, or look at
>    http://www.research.digital.com/wrl/publications/abstracts/95.4.html

Now, how does that relate to the multitude of non-Unix servers on the
Internet? Please remember that WWW <> Unix and HTTP <> Unix and TCP/IP <>
Unix. There are LOTS of implementations of WWW software that have
absolutely nothing to do with Unix, Unix kernel settings, Unix kernel
performance, Unix IP stacks, or anything else to do with Unix. The reason
this is an issue is that you cannot predicate protocol decisions solely on
the implementation of IP stacks on Unix hosts.

Rationalizing protocol extensions based on the assumption that
Unix-oriented measures are sufficient justification is not acceptable. The
second most widely used HTTP server on the Internet is Mac-based, according
to GA Tech's latest WWW survey, behind NCSA httpd and ahead of CERN httpd.
You can bet that non-Unix TCP/IP stacks have radically different resource
constraints and performance issues.

>The reason is that the number of TIME_WAIT entries is directly related
>to the number of TCP connections used.  If you use sessions (what I
>called in my paper "persistent connections"), you need to create fewer
>TCP connections for the same number of retrievals.  So you end up
>with fewer TIME_WAIT entries.

This is irrelevant on platforms with a limited number of TCP/IP streams
that can be formed. People discussing this issue are right to refer to
"irresponsible use" of TCP/IP connections.

>    Note that I am not advocating irresponsible use of sessions, although
>    it would make sense to me that a clinet might request a session for
>    every HTTP request that it makes under the assumtion that 90% of HTML
>    pages have some images on them. And if they dont, you just close the
>    connection as soon as you have recevied it anyway.
>
>I don't understand how the term "irresponsible" applies here at all.
>I frankly don't see any situations where the use of persistent
>connections can cause any problems (under the assumption that any
>party can terminate a connection whenever it wants to free up the
>resources).

IF that is built into the protocol, that's fine. But as was pointed out
earlier today, unilateral termination of a persistent session can lead to
race conditions and in effect eliminates persistence altogether in resource
constrained situations.

A related, somewhat important piece to this puzzle is the need for HTTP
clients to implement a retry scheme when servers report that they are
resource constrained with a 50x error code. As far as I know, no clients in
widespread use implement retries when a server reports that it is too busy
or is unable to service a request due to resource constraints. Implementing
this portion of the standard in WWW clients will go a long way towards
eliminating the potential race conditions that can arise when a server
terminates a session after a client has issued a new request but before the
server received it. The client will simply retry.

>I also suspect that much of the benefit comes NOT from imbedded
>images, but from subsequent requests for HTML pages (i.e., the
>user clicks, reads, and clicks again).

The last thing I want to do with a resource-constrained server is
re-implement the nightmare of hundreds of blinking cursors in otherwise
idle telnet sessions. The HTTP protocol is primarily connectionless
(stateless) for reasons of efficiency from the server's perspective. I
think a persuasive argument can be made for keeping a stream open while all
of the required parts of a single "page" are transmitted. Allowing an
individual to monopolize a scarce resource for longer periods of time, on
the off chance that a human might select another link to your site from the
page he just received, IS irresponsible.

--_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Chuck Shotton                               StarNine Technologies, Inc.
chuck@starnine.com                             http://www.starnine.com/
cshotton@biap.com                                  http://www.biap.com/
                 "Shut up and eat your vegetables!"
Received on Thursday, 6 July 1995 11:28:51 EDT

This archive was generated by hypermail pre-2.1.9 : Wednesday, 24 September 2003 06:31:23 EDT