Web Capacity Planning: How to Plan for Server Growth
Dave Zwieback
See Sidebar
There is surprisingly little relevant literature on capacity
planning, and having the latest and the fastest equipment doesn't
always guarantee the best performance, nor is always economically
feasible. As a result, sys admins rely on a mixture of experience
and "magic" in right-sizing their systems. In this article, I
provide some practical advice on selecting a system and planning
for growth, as well as getting the most of your system for Web
server purposes.
HTTP over TCP/IP
Web clients (browsers) and servers communicate via the Hyper
Text Transfer Protocol (HTTP). A typical Web client makes a
connection to a Web server, requests and receives one HTTP object
(e.g., an HTML file or a JPEG image) or an error message, then
closes the connection. (For an example of what actually happens,
telnet to port 80 of www.samag.com and type "GET /" followed
by a return.) A typical HTML page contains several references to
other HTTP objects (like in-line images and sounds), so the client
makes separate connections for each of the remaining objects before
the page is properly displayed on the screen. (Netscape Navigator
by default makes up to four connections to the server in rapid
succession, so several objects may be loading
"simultaneously".)
A relatively small amount of data is transferred over each such
connection, and it is not uncommon for a Web server to receive
millions of connections a day. Thus, current out-of-the-box TCP/IP
implementations may not be the best match for the HTTP world, since
they are usually optimized for a few long-lived connections with
substantial amounts of data transferred.
|