On 23.03.2010 13:34, Jeff Trawick wrote:
On Tue, Mar 23, 2010 at 7:19 AM, Rainer Jung<rainer.j...@kippdata.de>  wrote:
I can currently reproduce the following problem with 2.2.15 event MPM under
high load:

When an httpd child process gets closed due to the max spare threads rule
and it holds established client connections for which it has fully received
a keep alive request, but not yet send any part of the response, it will
simply close that connection.

Is that expected behaviour? It doesn't seem reproducible for the worker MPM.
The behaviour has been observed using extreme spare rules in order to make
processes shut down often, but it still seems not right.

Is this the currently-unhandled situation discussed in this thread?

http://mail-archives.apache.org/mod_mbox/httpd-dev/200711.mbox/%3ccc67648e0711130530h45c2a28ctcd743b2160e22...@mail.gmail.com%3e

Perhaps Event's special handling for keepalive connections results in
the window being encountered more often?

I'd say yes. I know from the packet trace, that the previous response on the same connection got "Connection: Keep-Alive". But from the time gap of about 0.5 seconds between receving the next request and sending the FIN, I guess, that the child was not already in the process of shutting down, when the previous "Connection: Keep-Alive" response was send.

So for me the question is: if the web server already acknowledged the next request (in our case it's a GET request, and a TCP ACK), should it wait with shutting down the child until the request has been processed and the response has been send (and in this case "Connetion: Close" was included)?

For the connections which do not have another request pending, I see no problem in closing them - although there could be a race condition. When there's a race (client sends next request while server sends FIN), the client doesn't expect the server to handle the request (it can always happen when a Keep Alive connection times out). In the situation observed it is annoying, that the server already accepted the next request and nevertheless closes the connection without handling the request.

I will do some testing around your patch

http://people.apache.org/~trawick/keepalive.txt

and the discussion in the mail thread you cited.

Thanks for the pointer!

Regards,

Rainer

Reply via email to