On Thu, Feb 16, 2017 at 12:06 AM, Jacob Champion <champio...@gmail.com> wrote: > On 02/15/2017 02:03 PM, Yann Ylavic wrote: > >> Assuming so :) there is also the fact that mod_ssl will encrypt/pass >> 8K buckets at a time, while the core output filter tries to send the >> whole mmap()ed file, keeping what remains after EAGAIN for the next >> call (if any). > > Oh, right... we split on APR_MMAP_LIMIT in the mmap() case. Which is a nice > big 4MiB instead of 8KiB. Could it really be as easy as tuning the default > file bucket size up?
Actually this is 16K (the maximum size of a TLS record), so 16K buckets are passed to the core output filter (which itself bufferizes buckets lower than THRESHOLD_MIN_WRITE=4K, up to THRESHOLD_MAX_BUFFER=64K before sending. Without SSL, sending is done up to the size of the mmapp()ed file still, which may make a difference. Maybe you could try to play with THRESHOLD_MIN_WRITE/THRESHOLD_MAX_BUFFER in server/core_filters.c for the SSL case (e.g. MIN=4M and MAX=16M), but that'd still cost some transient to heap buckets (copies) which don't happen in the non-SSL case... > > --Jacob