On Wed, 2013-11-13 at 16:48 +0100, Sebastiano Vigna wrote:
> On 13 Nov 2013, at 4:43 PM, Oleg Kalnichevski <[email protected]> wrote:
> 
> > On Wed, 2013-11-13 at 14:35 +0100, Sebastiano Vigna wrote:
> >> Question: when a connection opened with DefaultConnectionReuseStrategy 
> >> will be actually closed? When the same client is used with a different 
> >> host? Or is there some explicit operation that must be done to close the 
> >> connection?
> >> 
> > 
> > I am not sure I understand the question. Do you mean when a connection
> > kept alive in the pool gets closed when expired?
> 
> 
> Sorry.
> 
> We use the following client:
> 
>               httpClient = HttpClients.custom()
>                               .setSslcontext( TRUST_SELF_SIGNED_SSL_CONTEXT )
>                               .setConnectionManager( connManager )
>                               .setConnectionReuseStrategy( 
> DefaultConnectionReuseStrategy.INSTANCE )
>                               .build();
> 
> Now, after we do a number of consecutive fetches form the same host, we know 
> that it won't happen for several seconds, or even minutes. We don't want the 
> client to keep the connection open after we completed our fetch cycle. We 
> download in parallel from hundreds of thousands of hosts at several thousand 
> pages per second, so we cannot leave open connection around or we risk to 
> exaust the ports.
> 
> How can we be sure that the TCP connection with a host is shut down 
> immediately, after we finish our batch of consecutive fetches?
> 

NHttpClientConnectionManager#closeIdleConnections(
0, TimeUnit.MILLISECONDS)

is what you want.

Oleg



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

Reply via email to