You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Murali Mogalayapalli (JIRA)" <ji...@apache.org> on 2013/12/24 21:13:50 UTC

[jira] [Commented] (AMQ-4955) TCP Connections and related thread leak.

    [ https://issues.apache.org/jira/browse/AMQ-4955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13856446#comment-13856446 ] 

Murali Mogalayapalli commented on AMQ-4955:
-------------------------------------------

I have further did remote debugging on this. It points to the following area of the code.
InactivityMonitor.configuredOk()
This method is coded is such a way that it returns false if the wire protocol from the client has not been received. Because of this the connection is not yet added to be monitored by the inactivity monitor so the Client connections that did not finish the wire protocol negotiation are never can be cleaned up by the Broker leaking and eventually running out of threads and memory.


> TCP Connections and related thread leak.
> ----------------------------------------
>
>                 Key: AMQ-4955
>                 URL: https://issues.apache.org/jira/browse/AMQ-4955
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.8.0
>         Environment: Windows 2008 R2, Jdk 1.7.40
>            Reporter: Murali Mogalayapalli
>            Priority: Critical
>         Attachments: TCP-Connection.jpg, ThreadStack.jpg, activemq.xml
>
>
> TCP Connections and related thread leak.
> Scenario
> Active MQ version 5.8
> NMS Client version 1.6
> OS - Windows 2008 R2
> JDK - 1.7.x
> activemq.xml is attached
> If a client connectivity gets lost between the time the initial socket is created and the exchange of the wire format, the active MQ server's Client's server thread gets blocked in socket read hanging out the TCP connection and the related thread
> Here are the steps to recreate
> 1. Configure the Active MQ server with the activemq.xml attached.
> 2. Start the client in a debugger and have a break point at a place in such a way that the client can be disconnected after the socket is established.
> 3. Once the breakpoint is hit, disconnect the client machine from the network
> 4. Kill the client- This basically simulates a situation where the socket tear down packets are not reached the active mq server.
> 5. Open the JConsole. Look for the hanging TCP connection and the related thread.
> Is there an configurable option in Active MQ to sweep and close the connections, on regular interval, that still didn't finish the wire protocol negotiation?



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)