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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to