adaptive connection pool sizing
-------------------------------

                 Key: HTTPCLIENT-1101
                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1101
             Project: HttpComponents HttpClient
          Issue Type: New Feature
          Components: HttpClient
    Affects Versions: Future
            Reporter: Jon Moore
            Assignee: Jon Moore


I'm currently working on a patch (wrote most of it on a cross-country flight) 
that will adapt the size of a per-route connection pool based on the 
interactions we see from that particular host. There's a sample implementation 
that does TCP-style additive increase/multiplicative decrease (AIMD) adaptation 
of the per-route pool where successful requests allow probing for more 
connections, but socket timeouts, connection timeouts, and 503s all result in 
backoffs.

I'm hoping to hook this up for a demo to show multiple clients hitting a server 
with a fixed capacity where we can kill one client and the others then increase 
their pool sizes to take advantage of the unused server capacity. We can then 
restart the client and see things rebalance again. This would enable folks to 
use HttpClient e.g. in an application server cluster setting, where we wouldn't 
have to precompute or adjust the connection pool sizes as we add/remove nodes 
from the cluster (whether intentionally or via failures).

Once I get that proof of concept working I'll post a patch for review. Roughly 
the patch hooks into AbstractHttpClient to look either for an HttpResponse or 
to catch an Exception, then hands those events off to another object to decide 
whether to backoff or not. In turn, we dynamically manage a ConnPerRouteBean to 
adjust the maxPerRoute to allow for the pool to grow or shrink naturally with 
TSSCM. Default implementations are all backwards compatible and don't change 
behavior.

Thoughts?

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to