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.