bill stoddard wrote:
I completely agree, it's not a slam-dunk conclusion that async/event
driven connection management in an http server is clearly superior.
However, Bing mentioned Windows...  Apache on Windows is not a stellar
performer, especially compared to a server that fully exploits IOCPs, connection reuse and TransmitFile. The Windows MPM does use IOCPs (not optimally) and connection reuse. The biggest inhibitor to Apache on Windows performance serving files is in the apr_sendfile implementation. Calls to TransmitFile are broken into something like 64KB chunks in order to facilitate detecting send timeouts. If you modify the call to
TransmitFile to always just send the whole file, performance sending
large files will improve dramatically.

My current thinking goes as follows;

 * drop detecting timeouts in apr_sendfile (if win32 is incapable, so be it,
   they can configure sendfile off if they must, and in fact we could
   do so by default, solving all sorts of NFS-issues with it.)

 * drop win32acceptex semantics, replace them with acceptfilter... none
   (a simple accept), connect[ion] (the acceptex semantic), data (acceptex
   enhanced with first buffer).

I'll be committing this over the next few weeks, but I'd love review and
feedback on the ideas.  Migrating the first discussion over to apr in the
next day or so.

Bill

Reply via email to