Document Type

Technical Report


Computer Science and Engineering

Publication Date






Technical Report Number



High-performance Web servers are essential to meet the growing demands of the Internet. Satisfying these demands requires a thorough understanding of the key factors that affect Web server performance. This paper provides three contributions to the design, implementation, and evaluation of high-performance Web servers. First, we report the results of a comprehensive empirical study of popular high-performance Web servers (such as Apache, Netscape Enterprise, PHTTPD, and Zeus) over high-speed ATM networks. This study illustrates their relative performance and identifies their performance bottlenecks. To measure performance accurately, we developed a new benchmarking technique that subjects Web servers to varying connection frequencies. We found that once network and disk I/O overheads are reduced to negligible constant factors, the main determinant of Web server performance is the concurrency strategy employed by the server. Moreover, no single strategy performs optimally for all load conditions and traffic types. Second, we describe the performance optimizations used to develop our a high-performance optimization used to develop our high-performance Web server: JAWS, JAWS is an object-oriented Web server that was explicitly designed to alleviate the performance bottlenecks we identified in existing Web servers. The performance optimizations used in JAWS include adaptive pre-spawned threading, intelligent caching, and prioritized request processing. Third, we outline the design principles and concurrency patterns of JAWS, focusing on its novel object-oriented software architecture. This architecture substantially improves the portability and flexibility of JAWS, relative to other Web servers. For instance, JAWS can configure itself automatically at run-time or installation-time to use the most efficient concurrency strategy for a given OS platform. In addition, JAWS can be configured to support multiple transport protocols (such as HTTP/1.0 and HTTP/1.1). Our work illustrates that highly efficient communication software is not antithetical to highly flexible software.


Permanent URL: