JAWS: A Framework for High-performance Web Servers James C. Hu Douglas C. Schmidt
[email protected] [email protected] Department of Computer Science Washington University St. Louis, MO 63130 Abstract Siemens [1] and Kodak [2] and database search engines such as AltaVista and Lexis-Nexis. Developers of communication software face many challenges. To keep pace with increasing demand, it is essential to de- Communication software contains both inherent complexities, velop high-performance Web servers. However, developers such as fault detection and recovery, and accidental complex- face a remarkably rich set of design strategies when config- ities, such as the continuous re-rediscovery and re-invention uring and optimizing Web servers. For instance, developers of key concepts and components. Meeting these challenges must select from among a wide range of concurrency mod- requires a thorough understanding of object-oriented appli- els (such as Thread-per-Request vs. Thread Pool), dispatching cation frameworks and patterns. This paper illustrates how models (such as synchronous vs. asynchronous dispatching), we have applied frameworks and patterns for communication file caching models (such as LRU vs. LFU), and protocol pro- software to develop a high-performance Web server called cessing models (such as HTTP/1.0 vs. HTTP/1.1). No sin- JAWS. gle configuration is optimal for all hardware/software platform JAWS is an object-oriented framework that supports the and workloads [1, 3]. configuration of various Web server strategies, such as a The existence of all these alternative strategies ensures that Thread Pool concurrency model with asynchronous I/O and Web servers can be tailored to their users’ needs.