continuum-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brett Porter (JIRA)" <j...@codehaus.org>
Subject [jira] (CONTINUUM-2693) File handle leak with TCP connections in CLOSE_WAIT when using distributed builds
Date Thu, 22 Nov 2012 09:01:13 GMT

    [ https://jira.codehaus.org/browse/CONTINUUM-2693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=314149#comment-314149
] 

Brett Porter commented on CONTINUUM-2693:
-----------------------------------------

I traced this into the way the XMLRPC is set up.

Atlassian XMLRPC Binder sets up Apache XMLRPC Client using the Commons HTTP Client 3.1 transport.
HTTP Client is using the default {{SimpleHttpConnectionManager}}. These are all hard coded.

Because the binder is not reused, a new XMLRPC client is set up for each call. The XMLRPC
client calls {{releaseConnection}} on the HTTP Client, which leaves the physical connection
open for reuse - but with nothing set up to reuse it or terminate it, it is left open until
GC happens on the socket. This is often quick, but some connections make it into the more
permanent area of heap.

See: http://fuyun.org/2009/09/connection-close-in-httpclient/

Medium term, the XMLRPC should be replaced with JAX-RS.

Potential short term solutions:
# adjust the binder to use the JDK URL Connection instead of the HTTP Client
# try and adjust the HTTP Client to use a multi-threaded connection manager, and then reuse
the binder/xmlrpc-client/http-client
# configure HTTP Client's background job to cleanup idle connections

This needs further investigation.
                
> File handle leak with TCP connections in CLOSE_WAIT when using distributed builds
> ---------------------------------------------------------------------------------
>
>                 Key: CONTINUUM-2693
>                 URL: https://jira.codehaus.org/browse/CONTINUUM-2693
>             Project: Continuum
>          Issue Type: Bug
>    Affects Versions: 1.4.1
>            Reporter: Brett Porter
>             Fix For: 1.4.1
>
>
> If you generate a lot of requests using the XMLRPC layer, such as when distributed builds
are active, it is possible for connections to stay in the {{CLOSE_WAIT}} state until they
are garbage collected. On a busy server with the default file limits, this can result in a
{{IOException: Too many open files}} error.
> The workaround is to increase the limit of the files for the user running Continuum.
However, the XMLRPC layer should manage the connections better to avoid them getting into
this state.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message