On 02/14/2009 10:46 PM, Rainer Jung wrote:
> On 14.02.2009 15:09, Ruediger Pluem wrote:
>> Current we set is_address_reusable to 0 for the reverse and forward
>> worker. Is this really needed?
>> IMHO we could reuse the connection if it goes to the same target
>> (we already check this).
> 
> By "check" you mean the code in ap_proxy_determine_connection()?

Yes.

> The check there seems only to happen in the case were the client reuses
> a keepalive connection.
> 
> I have the feeling, that disablereuse and is_address_reusable are used
> almost in the same way at the moment, except for mod_proxy_ftp.

IMHO disablereuse is a configurable option whereas is_address_reusable is
an internal flag set / unset by the code in various situations.

> 
> Both attributes are always checked together, so both imply the same
> behaviour.
> 
> What's the expected case were you can actually reuse the backend
> connection? A client using HTTP Keep-Alive and a backend connection

Especially I have the case in mind where HTTPD acts as a forward proxy
in a proxy chain and forwards all requests to the next proxy in the
chain. IMHO it is a pity that each request creates a new connection
to this proxy.

> that's not too busy, so that consecutive client requests to the same
> backend can be send via the same backend connection?
> 
> Could that be generalized to concurrent client connections C1, C2, ...
> mapping to different backend connections B1, B2, ..., each of them
> reused for the same client connection as long as it lasts (C1 -> B1,
> C2-> B2, ...)? If so, we would also need to find good default pool
> configuration for the reverse and forward worker.

IMHO there is no size that fits all, so I would like to make this configurable
by defining special worker names like _forward_ and _reverse_ which can
be configured via

ProxySet _forward_ .....
ProxySet _reverse_ .....

> 
> There's also a use case, were proxy requests are defined via
> RewriteRule. In case the host in the rewrite rule is a constant string,
> we would benefit from initializing a real worker, not using the default
> workers.

As said, this can be done today by

<Proxy [common prefix of rewriterule]>
  ProxySet ....
</Proxy>

Regards

RĂ¼diger

Reply via email to