Joan Balaguero wrote:
Hello,

I’ve implemented the following code to send a request, read the response and
returns back the connection to the pool:

(…)

Try

{

 (…)

 entity  = this.objHttp.execute(objPost));

 if (entity != null)

 {

  bis                   = new BufferedInputStream(entity.getContent());

  ByteArrayOutputStream buffer = new
ByteArrayOutputStream(httpOutBufferSize);

  byte[] tmp            = new byte[httpOutBufferSize];

  int numBytesRead      = 0;

  while ((numBytesRead = bis.read(tmp)) >= 0) buffer.write(tmp, 0,
numBytesRead);

  bis.close();

  bis = null;

 }

}

Catch (Exception e) {  throw new ProxyServletException(); }

Finally

{

 If (bis != null)

 {

  Try { bis.close(); bis = null; } catch (Exception e1) {}

 }

 If (entity != null)

 {

  Try { entity.consumeContent(); } catch (Exception e1) {}

 }

}

With this code:

1.       The connection is returned back to the pool correctly (the pool
never becomes exhausted).

2.       But I have more and more instances of java.net.* classes in my heap
histogram:


Joan

There is no need for so much code. Reliable connection release can be implemented much simpler:

http://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.0.1/httpclient/src/examples/org/apache/http/examples/client/ClientConnectionRelease.java




For example:

SockSocketImpl (number of instances)

12:30     19.517

13:30     70.731

14:00   107.061

SocketInputStream

12:30           907

13:30     68.650

14:00   103.568

It seems that the connection is returned back to the pool but the resources
associated with the http response are not freed up. At 12:20 I started
Tomcat, and the load from 12:20 since now is similar.

Is there any error in my code that I’m not able to see?


HttpClient is not known to leak SockSocketImpl instances. In any way, please upgrade to the latest SVN snapshot of HttpCore and re-test your application.

http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/

If the problem persists please try to gather more information about the problem by turning on context logging for connection management / request execution as described here:

http://hc.apache.org/httpcomponents-client-4.0.1/logging.html

Oleg

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

Reply via email to