You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by Oleg Kalnichevski <ol...@apache.org> on 2008/04/06 12:49:13 UTC

Re: Http connection management/throttling for various applications sending GET requests to the same web server using a single web service

On Thu, 2008-04-03 at 22:22 -0700, Sujith Joseph wrote:
> Hi,
>    I am trying to implement a way of throttling http connections to a web
> server from a web service, using httpclient, so that the web server wouldn't
> be overloaded with more than 'x' concurrent connections, from my web
> service. (I also need to ensure that the http connections available in the
> pool are utilized efficiently).
> 
> Within the web service, the http connections are created for various types
> of (client) applications and each such application has a preferred limit on
> the number of concurrent connections, it can create to the server. However
> if the connections requested by a particular application gets higher than
> its preferred limit, it could consume free http connections allocated to
> other applications. The thus eagerly acquired connections must be released,
> if the rest of the applications requests back for their allotted
> connections.
> 
> 
> To implement this, I am thinking of using a custom object pool of
> SimpleHttpConnectionManager objects for each of the applications and have a
> logic to maintain and regulate the number of these objects allocated/used,
> based on the load, during new connection requests. For each web server
> request, the plan is to create a connection from the
> SimpleHttpConnectionManager using a HttpClient and release it, after getting
> a response.
> 

Sujith,

SimpleHttpConnectionManager holds only one connection object. There is
no benefit in pooling SCM instances. You can as well maintain a pool of
HTTP connections. 

> Can someone help me with a better solution for this? I know that the
> MultiTHreadedConnectionManager keeps a pool of connections, but I am not
> sure, whether we can dynamically manipulate the max connections to a host,
> after an MTCM object creation (My understanding on MTCM is that it creates
> as many threads as the max connection limit on its creation). Is there
> something in Httpclient4.x that might help me in this?

HttpClient 4.x API is much, much more modular and flexible. You'll need
to write a lot less custom code. 


>  I am also thinking of
> a custom implementation of the HttpConnectionManager for this. Please
> advise.
> 

I do not see a way around writing a custom connection manager, which is
not an easy task.

Oleg

> 
> Thanks,
> Sujith


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Re: Http connection management/throttling for various applications sending GET requests to the same web server using a single web service

Posted by Sujith Joseph <su...@gmail.com>.
Hi Oleg,
           Thanks a lot for your advice.
Thanks,
Sujith

On Sun, Apr 6, 2008 at 3:49 AM, Oleg Kalnichevski <ol...@apache.org> wrote:

>
> On Thu, 2008-04-03 at 22:22 -0700, Sujith Joseph wrote:
> > Hi,
> >    I am trying to implement a way of throttling http connections to a
> web
> > server from a web service, using httpclient, so that the web server
> wouldn't
> > be overloaded with more than 'x' concurrent connections, from my web
> > service. (I also need to ensure that the http connections available in
> the
> > pool are utilized efficiently).
> >
> > Within the web service, the http connections are created for various
> types
> > of (client) applications and each such application has a preferred limit
> on
> > the number of concurrent connections, it can create to the server.
> However
> > if the connections requested by a particular application gets higher
> than
> > its preferred limit, it could consume free http connections allocated to
> > other applications. The thus eagerly acquired connections must be
> released,
> > if the rest of the applications requests back for their allotted
> > connections.
> >
> >
> > To implement this, I am thinking of using a custom object pool of
> > SimpleHttpConnectionManager objects for each of the applications and
> have a
> > logic to maintain and regulate the number of these objects
> allocated/used,
> > based on the load, during new connection requests. For each web server
> > request, the plan is to create a connection from the
> > SimpleHttpConnectionManager using a HttpClient and release it, after
> getting
> > a response.
> >
>
> Sujith,
>
> SimpleHttpConnectionManager holds only one connection object. There is
> no benefit in pooling SCM instances. You can as well maintain a pool of
> HTTP connections.
>
> > Can someone help me with a better solution for this? I know that the
> > MultiTHreadedConnectionManager keeps a pool of connections, but I am not
> > sure, whether we can dynamically manipulate the max connections to a
> host,
> > after an MTCM object creation (My understanding on MTCM is that it
> creates
> > as many threads as the max connection limit on its creation). Is there
> > something in Httpclient4.x that might help me in this?
>
> HttpClient 4.x API is much, much more modular and flexible. You'll need
> to write a lot less custom code.
>
>
> >  I am also thinking of
> > a custom implementation of the HttpConnectionManager for this. Please
> > advise.
> >
>
> I do not see a way around writing a custom connection manager, which is
> not an easy task.
>
> Oleg
>
> >
> > Thanks,
> > Sujith
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>