The server architecture also impacts the feasibility and profitability of certain types of Web server optimizations and features. We compare the tradeoffs necessary in the various architectures from a qualitative standpoint.
Information gathering - Web servers use information about recent
requests for accounting purposes and to improve performance, but the
cost of gathering this information across all connections varies in
the different models. In the MP model, some form of interprocess
communication must be used to consolidate data. The MT model either
requires maintaining per-thread statistics and periodic consolidation
or fine-grained synchronization on global variables. The SPED and
AMPED architectures simplify information gathering since all requests
are processed in a centralized fashion, eliminating the need for
synchronization or interprocess communications when using shared
state.
Application-level Caching - Web servers can employ
application-level caching to reduce computation by using memory to
store previous results, such as response headers and file mappings for
frequently requested content. However, the cache memory competes with
the filesystem cache for physical memory, so this technique must be
applied carefully. In the MP model, each process may have its own
cache in order to reduce interprocess communication and
synchronization. The multiple caches increase the number of compulsory
misses and they lead to less efficient use of memory. The MT model
uses a single cache, but the data accesses/updates must be coordinated
through synchronization mechanisms to avoid race conditions. Both
AMPED and SPED can use a single cache without synchronization.
Long-lived connections - Long-lived connections occur in Web
servers due to clients with slow links (such as modems), or through
persistent connections in HTTP 1.1. In both cases, some server-side
resources are committed for the duration of the connection.
The cost of long-lived connections on the server depends on the
resource being occupied. In AMPED and SPED, this cost is a file
descriptor, application-level connection information, and some kernel
state for the connection. The MT and MP models add the overhead of an
extra thread or process, respectively, for each connection.