Compile-Time Configuration Issues
mod_status and Rule STATUS=yes
If you include mod_status and you also set
Rule
STATUS=yes when building
Apache, then on every request Apache will perform two calls to
gettimeofday(2) (or times(2),
depending on your operating system), and (pre-1.3) several extra
calls to time(2). This is all done so that the
status report contains timing indications. For highest performance,
set Rule STATUS=no:
Accept Serialization—Multiple Sockets
This section discusses a shortcoming in the Unix socket API. Suppose
your web server uses multiple Listen statements to
listen on either multiple ports or multiple addresses. In order to
test each socket to see if a connection is ready, Apache uses
select(2). select(2) indicates
that a socket has either no connections or at least one connection
waiting on it. Apache’s model includes multiple children, and
all the idle ones test for new connections at the same time. A naive
implementation looks something like this (these examples do not match
the code, they’re contrived for pedagogical purposes):
for (;;) { for (;;) { fd_set accept_fds; FD_ZERO (&accept_fds); for (i = first_socket; i <= last_socket; ++i) { FD_SET (i, &accept_fds); } rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL); if (rc < 1) continue; new_connection = -1; for (i = first_socket; i <= last_socket; ++i) { if (FD_ISSET (i, &accept_fds)) { new_connection = accept (i, NULL, NULL); if (new_connection != -1) break; } } if (new_connection != -1) break; } ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access