Thanks for taking the time to do this.
>
> Some other performance issues that I've noticed:
> 0. It's using read rather than mmap to get the content
> from the files being delivered. Is this just a config
> error?
Back in the Apache 1.3 days, someone did some performance testing and
discovered that on Solaris, MMAP'ing files less that 8K bytes was more
expensive than just reading them into a buffer. That same 'optimization' is
in Apache 2.0. Not sure what version of Solaris was used to determine that
initial MMAP_THRESHOLD and if it is still a good number for the latest
releases. This would be a good thing to do some more testing on.
> 1. On a request that results in a 304, the httpd does a
> gratuitous open/close of the requested file after stat'ing it.
Sounds like a bug.
> 2. There's also an extra read on the request socket just
> before the httpd sends the response, and another after
> the logger runs; both of these fail with EAGAIN. (I saw
> this with an HTTP/1.1 client that supports keepalives, so
> the last failed read was followed by a poll to wait for
> the next request on the socket.)
I suspect this is from checking for pipelined connections. To the best of my
knowledge, no browsers actually support pipelined connections but we take a
performance hit each request checking for pipelined requests. Uuugh.
Bill