[ 
https://issues.apache.org/jira/browse/HTTPASYNC-109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15402693#comment-15402693
 ] 

Kirill Barkunov commented on HTTPASYNC-109:
-------------------------------------------

Sorry, I did not know that it matters. Actually on completion I make the 
following:
{code}
String json = EntityUtils.toString(httpsResponse.getEntity());
// do smth with json
{code}
As I see, this util method closes stream that uses. Other 2 callback methods 
really do nothing except logging.
And, by the way, firewall, as I know, cuts any connection, not only ones with 
idle state. 

As I understand from the docs you provided, I need to call response.close() 
only if I want to close current connection. But since I'm making all the 
request to the same target host I want to use connection multiple times to 
improve performance.

Your point is that I don't handle the response in 'completed' callback 
properly, right?
I was trying to reproduce this issue on my local machine, but i did not manage 
to succeed. I was trying to send few thousands requests  per second (with the 
same config as above. without closing the response) but it was working properly 
all the time. I was only able to make one entry stays in 'leased' set forever. 
(and I don't know how. It happened only once during my tests.)

Thanks!
Kirill.

> Requests in AbstractNIOConnPool.pending stays forever.
> ------------------------------------------------------
>
>                 Key: HTTPASYNC-109
>                 URL: https://issues.apache.org/jira/browse/HTTPASYNC-109
>             Project: HttpComponents HttpAsyncClient
>          Issue Type: Bug
>    Affects Versions: 4.1.2
>            Reporter: Kirill Barkunov
>
> Hi!
> I have a client built this way:
> {code}
> IOReactorConfig ioReactorConfig = IOReactorConfig.custom()
>             .setIoThreadCount(Runtime.getRuntime().availableProcessors())
>             .setConnectTimeout(30000)
>             .setSoTimeout(30000)
>             .build();
>     private CloseableHttpAsyncClient httpAsyncClient = 
> HttpAsyncClients.custom().setMaxConnTotal(150).setMaxConnPerRoute(130).setDefaultIOReactorConfig(ioReactorConfig).build();
> {code}
> I've noticied that on environment with a firewall enabled (I think it cuts 
> all the socket connection 5 minutes after their establishing) after some time 
> client stops sending https request. After a small investigation I've started 
> to monitor insides of the client and noticied that a few minutes after the 
> client start - AbstractNIOConnPool.pending collection starts to grow. At 
> start it's 0. After few minutes it's 1-2. Then it starts to grow faster and 
> few minutes later it reaches maximum number of connections per route. And it 
> stops work forever. Only AbstractNIOConnPool.leasingRequests grows and no one 
> of the new requests are processed.
> Target for all the requests is www.googleapis.com
> As I can understand from client insides load is like 1-5 request at a time.
> I mean before first "dead" request in AbstractNIOConnPool.pending the number 
> of "leased" and "available" is not more than 5.
> Best regards, Kirill.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to