On Tue, 2012-01-24 at 08:03 -0700, Chen, Drew T wrote:
> I'm using DefaultHttpAsyncClient to connect to approximately 100 remote hosts.
> What I'm seeing through Wireshark is that only 19 or 20 requests are made 
> immediately. As those 20 finish, then the rest of the requests in the queue 
> are processed gradually.
> 
> I want DefaultHttyAsyncClient to be able to initiate all 100 immediately 
> because these requests remain idle for a very long time, like 20 seconds each)
> 
> Looking into the source, I can see PoolingAsyncClientConnectionManager uses 
> HttpNIOConnPool which the underlying base class shows a max of 20. The 
> pool.setMaxTotal() I would expect to fix that does not seem to have any 
> effect when I run it.
> 
> Here is a snippet of the code:
> 
>             DefaultConnectingIOReactor defaultioreactor = new 
> DefaultConnectingIOReactor();
> PoolingAsyncClientConnectionManager pool = new 
> PoolingAsyncClientConnectionManager(defaultioreactor);
> pool.setMaxTotal(200); // This I would expect to enable the 
> DefaultHttpAsyncClient to immediately connect up to 200 socket channels.
> 
>             DefaultHttpAsyncClient defaultHttpClient = new 
> DefaultHttpAsyncClient(pool);
>             httpClient = defaultHttpClient;
>             httpClient.getParams()
>                   .setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 60000)
>                   .setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 
> 60000)
>                   
> .setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, true)
>                   .setIntParameter(CoreProtocolPNames.WAIT_FOR_CONTINUE, 500);
> 
> defaultHttpClient.getCredentialsProvider().setCredentials(
>                   AuthScope.ANY,
>                   new UsernamePasswordCredentials("user", "password"));
> 
>             httpClient.start();
> 
>                                 targets = ...; //targets is a Map<String, 
> HttpHost>
> 
>             CountDownLatch latch = new CountDownLatch(targets.size()); // 
> size will be approx. 100.
> 
>             for (Map.Entry<String,HttpHost> SBB : targets.entrySet()) {
>                   String name = SBB.getKey();
>                   HttpHost target = SBB.getValue();
> 
>                   HttpRequestBase targetRequest = // function to create 
> HttpGet();
>                   SHEFFutureCallback futresponse = // new future callback 
> object.
> 
>                   httpClient.execute(target, targetRequest, futresponse);
>             }
> 
> And for context, I'm running it on a Windows XP Intel Core2 Duo machine with 
> a Gigabit NIC.

Please produce connection management context log as described here [1]
and post it to this list

Oleg

[1] http://hc.apache.org/httpcomponents-client-ga/logging.html 


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

Reply via email to