You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "stefano gristina (JIRA)" <ji...@apache.org> on 2014/06/17 17:06:08 UTC

[jira] [Created] (HTTPCLIENT-1518) In 4.3.2/3 (running on Sun Solaris 10) during stress test connections go in close_wait

stefano gristina created HTTPCLIENT-1518:
--------------------------------------------

             Summary: In 4.3.2/3 (running on Sun Solaris 10) during stress test connections go in close_wait
                 Key: HTTPCLIENT-1518
                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1518
             Project: HttpComponents HttpClient
          Issue Type: Bug
          Components: HttpClient
    Affects Versions: 4.3.3, 4.3.2
            Reporter: stefano gristina
            Priority: Critical


Httplclient used is 4.3.2/3  inside servlet under tomcat 7 (jre 7). SO: Sun Solaris 10.

During stress test (after some hour)TCP  connections to server go in close_wait. 

bash-3.2$ netstat -an |grep 8010| grep CLOSE_WAIT        
10.199.139.13.37055  10.199.139.1.8010     8760      0 49640      0 CLOSE_WAIT
10.199.139.13.37145  10.199.139.1.8010     8760      0 49640      0 CLOSE_WAIT
10.199.139.13.37140  10.199.139.1.8010     8760      0 49640      0 CLOSE_WAIT
10.199.139.13.37109  10.199.139.1.8010     8760      0 49640      0 CLOSE_WAIT
10.199.139.13.36798  10.199.139.1.8010     8760      0 49640      0 CLOSE_WAIT
10.199.139.13.37226  10.199.139.1.8010     8760      0 49640      0 CLOSE_WAIT

One only connection is active at the end. With one only TCP connection the performances are very low. Work around is to restart Tomcat.
Behaviour not acceptable.
The class IdleConnectionMonitorThread is used to close idle and expired tcp connections: not real effect.

Issue solved using httpclient 3.0.1.

Snippet of code:

init()
public void init(ServletConfig config) throws ServletException {
cm = new PoolingHttpClientConnectionManager();
			cm.setDefaultMaxPerRoute(numOfConnectionTOADC);
			// HttpClient client = new DefaultHttpClient(cm);
			RequestConfig defaultRequestConfig = RequestConfig.custom()
					.setSocketTimeout(socketTimeoutADC)
					.setConnectTimeout(connectionTimeoutADC).build();
			client = HttpClients.custom().setConnectionManager(cm).build();
			idleConn=new IdleConnectionMonitorThread(cm);
			idleConn.start();
}

protected void doGet(){

CloseableHttpResponse respon;
				try {
					respon = client.execute(req, context);
				}
				catch (Exception e) {
					
				}
				finally {
					respon.close();
					req.releaseConnection();
				}
}




--
This message was sent by Atlassian JIRA
(v6.2#6252)

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