Chapter 13. Server Software

Inside Web Server Software

At the most basic level, web servers accept requests and return replies. The reply can be a static page, custom dynamic content, or an error. While there is a lot of variation in performance depending on load, an individual request for a static page typically takes only one- or two-tenths of a second from the time the request arrives on the network until the response is pushed back out. Modem latency, Internet latency, and even browser parsing time are all likely to be larger than that, so a lightly loaded web server will not be a bottleneck.

A heavily loaded web server is another story. Web servers tend to go nonlinear when loaded beyond a certain point, degrading rapidly in performance. This chapter is about why that happens and what your options are for getting the most out of your web server software.

The Evolution of Server Software

Servers spawned from inetd

The first generation of web servers were just another Unix service launched on demand from inetd , which reads /etc/services on startup and listens to the ports specified. When a request comes in on one of inetd ’s ports, it launches the program specified in /etc/services to deal with requests on that port. This requires calling the fork() and exec() system calls: fork() to clone inetd to get a process, and exec() to write over that process with another process that can service the request. This mechanism is intended to conserve system resources by starting up daemons ...

Get Web Performance Tuning now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.