On 10/15/2008 10:26 PM, Graham Leggett wrote:
> Lars Eilebrecht wrote:
> 
>> The second odd thing is that the connections/threads in W state
>> seem to be hanging, i.e., no data is being transferred over the
>> connection and these threads/connection time out after about 256
>> seconds. However, the general Timeout setting is 30s so why
>> isn't the connection killed after 30s?
> 
> Something else to try is to look at the ProxyIOBufferSize parameter.
> 
> The proxy reads from the backend in blocks, and as soon as a block is
> not full (ie it's the last block), the proxy will complete and terminate
> the backend request before sending the last block on to the client.

No. See below.

> If the request is small enough to fit into a single block (or if the
> buffer size is big enough for a bigger request to fit), what this means
> is that a slow client on the front end will not hold up the backend,
> which will be released immediately.

But only if ap_pass_brigade does not block (for long), which means that either
the client consumes the data fast enough or that the buffering in the core 
output
filter / TCP buffer is sufficient. Furthermore in the HTTP(s) reverse proxy case
all buckets in the output chain need to be flushed before the connection is 
released
back to the connection pool. This means that this data either needs to be 
consumed
by the client or needs to fit into the TCP buffer.

Regards

RĂ¼diger

Reply via email to