1. Introduction
Most popular Web sites are suffering from severe congestion, since they are getting millions of requests per day in coincidence or not with special events. These sites are overwhelmed by the offered load and the Web service providers have to deal with peak demands that are much higher than the average load supported by their site. Any single machine can easily become a bottleneck and, even worse, that server would represent an intolerable single point of failure. The most obvious way to cope with growing service demand is adding hardware resources because replacing an existing machine with a faster model provides only temporary relief from server overload. Furthermore, the number of requests per second that a single server machine can handle is limited and cannot scale up with the demand. The need to optimize the performance of Internet services is producing a variety of novel Web architectures. In this paper we consider Web server farms that use a tightly coupled distributed architecture or a multiprocessor machine. From the user's point of view, any HTTP request for a document is presented to a logical (front-end) server that acts as a representative for the Web site. This server, namely Dispatcher, retains transparency of the parallel architecture for the user, guarantees backward compatibility with present Web standards, and distributes all client requests to the back-end servers. Multiprocessor or cluster architectures with Dispatcher have been adopted with different solutions in various academic and commercial Web farms, e.g. [1], [5], [8], [10], [12].