On Thu, 2013-07-04 at 11:19 +0100, Ke Ren wrote:
> Thanks Oleg. 4.2 benchmark code is super useful. I ran this code there is
> no big difference between 4.3 and 4.2. I found STALE_CONNECTION_CHECK is
> false in benchmark test. If it's on it will drop Requests per second from
> 17k to 14k.
> 

Yes, this is expected. 

> I plugin our http client wrapper on top of apache http client in apache
> benchmark test with the same settings and it achieved the same. The problem
> is I still got the same issue in our own loadtest either with our wrapper
> client or with the client from benchmark. STALE_CONNECTION_CHECK is true in
> our loadtest because it caused another issue:
> 
> rg.apache.http.NoHttpResponseException: The target server failed to respond
>         at
> org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:95)
> 

I think you might be better off closing persistent connections that have
been idle for too long every once in a while rather than doing an stale
connection check for every request, which is very expensive in terms of
performance.

Please also make sure you are using version 4.2.5 of HttpClient

> Our loadtest is pretty simple. We have a target ec2 instance to serve the
> url we are going to hit. Benchmark and our loadtest were tested against the
> same instance. In our loadtest, we have a jetty server with jersey rest
> framework on another m3.xlarge instance. basically it receives requests
> from pressure test framework and then calls target url. So the testing
> function is just a http client call inside a rest call. It means each
> income call will cause a outcome call.
> 
> Comparing with benchmark code, the concurrency in our code set by
> maxPerRoute doesn't reflect the real concurrency caused from income calls.
> I am going to investigate this part. Do you see any other issues?
> 

You are not creating a new instance of HttpClient for each request by
any chance?

Oleg

> Thanks,
> 
> Ke
> 
> 
> On Wed, Jul 3, 2013 at 8:59 PM, Oleg Kalnichevski <[email protected]> wrote:
> 
> > On Wed, 2013-07-03 at 18:59 +0100, Ke Ren wrote:
> > > Hi,
> > >
> > > We are using httpcomponents httpclient 4.2.2 and doing loadtest with
> > > client. when we increased concurrent requests to 3000 per second, we
> > found
> > > it took near half of cpu usage on aws ec m3.xlarge instance. We have
> > config
> > > as the following:
> > >
> > > keepAlive is enabled. socket buffer size is 8 * 1024. maxConnection:
> > 2000,
> > > maxPerRoute: 2000
> > >
> > > Today we found apache benchmark test with httpclient 4.3.beta and ran it
> > on
> > > the same aws ec2 instance. The outcome is impressive. It achieved more
> > than
> > > 16k requests per second and cpu usage is much lower. Its config is pretty
> > > simple: max connection is 2000 with max 50 conns per route. same buffer
> > > size.
> > >
> > > I am just curious if http client 4.3.beta is improved so much or we did
> > > wrong config with 4.2.2.
> > >
> > > Thanks in advance
> > >
> > > Ke
> >
> > I suspect wrong configuration. HC 4.3 can be expected to be marginally
> > faster for smaller messages but the difference can hardly be more than
> > 15%. There is also a version of benchmark that uses 4.2.5 version of
> > HttpClient if that can help.
> >
> >
> > https://svn.apache.org/repos/asf/httpcomponents/benchmark/httpclient/branches/4.2.x/
> >
> > Oleg
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> >



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

Reply via email to