You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Oleg Kalnichevski (JIRA)" <ji...@apache.org> on 2018/04/25 08:50:02 UTC

[jira] [Resolved] (HTTPCLIENT-1917) setValidateAfterInactivity not closing CLOSE_WAIT

     [ https://issues.apache.org/jira/browse/HTTPCLIENT-1917?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oleg Kalnichevski resolved HTTPCLIENT-1917.
-------------------------------------------
    Resolution: Invalid

The {{validateAfterActivity}} setting applies to connections leased from the connection pool. It is not supposed to close idle connections kept alive in the pool. One needs to employ an idle connection monitor thread in order to evict idle / expired connections proactively.

Oleg  

> setValidateAfterInactivity not closing CLOSE_WAIT
> -------------------------------------------------
>
>                 Key: HTTPCLIENT-1917
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1917
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient (async)
>    Affects Versions: 4.5.5
>            Reporter: kumaran
>            Priority: Major
>
> We are facing CLOSE_WAIT issue in our production system on heavy load. We are using Apache’s httpClient 4.5.5 and httpcore 4.4.9 in our code. Sometime the server sends half of the data; sometime server sends no data and close the connection at their end. Now, httpclient puts the socket connection to CLOSE_WAIT indefinitely and waits for the ACK from server and
>  
> We tried the following but nothing helped us.
>  
>  * Set TTL to 1 minutes in PoolingHttpClientConnectionManager
>  * Used the following methods
>  ** evictExpiredConnections()
>  ** evictIdleConnections(5, TimeUnit._SECONDS_)
>  ** [https://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html|https://apac01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fhc.apache.org%2Fhttpcomponents-client-ga%2Ftutorial%2Fhtml%2Fconnmgmt.html&data=02%7C01%7Ckumaran.ae%40hcl.com%7Ce88009e18e4145e27ebc08d5aa2ae38c%7C189de737c93a4f5a8b686f4ca9941912%7C0%7C0%7C636602023532727032&sdata=2s0L63M%2F%2F7slLF3Uhx2Ly2SHSiknz0hA4fF8wDvxbS0%3D&reserved=0]
>  *** Topic “2.5. Connection eviction policy”
>  *** Topic “2.6. Connection keep alive strategy”
>    Later, we found the method “setValidateAfterInactivity”. Its description says “This check helps detect connections that have become stale (half-closed) while kept inactive in the pool”. So we thought it will help us to detect and close the socket which are in “CLOSE_WAIT” state. But it did not help us.
> Problem here, The HTTP client puts the socket into “CLOSE_WAIT” state and waiting for the signal from server to close the socket. But the server closed the connection already.  Please suggest us how to handle/resolve the issue?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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