mpm_event: move lingering close "sucker" from the listener to worker(s).
This was the last non-constant time action performed by the listener thread. It's now handled by the worker thread directly after entering lingering close, which should directly address the cases when the socket is already closed remotely at that time, hence avoid more scheduling (it may be the common case for some scenarios). And it's only if the above would need blocking (i.e. more data to suck) that the socket is added to the pollset for the listener to re-schedule a worker later when ready. If no worker is available at that time then the socket is forcibly closed (similarly to what's done for keepalive connections in this case). Also, since process_lingering_close() is now called by a worker thread and with almost no depth in the call stack, we can grow the size of the "suck" buffer from 2K to 32K to potentially call recv() up to sixteen times less. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1823047 13f79535-47bb-0310-9956-ffa450edef68
parent
9932c5d8
Please register or sign in to comment