You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Sebastien Rodriguez (JIRA)" <ji...@apache.org> on 2010/02/10 10:05:33 UTC

[jira] Reopened: (AMQ-2448) Memory leak when there are network connector retries to an unavailable broker

     [ https://issues.apache.org/activemq/browse/AMQ-2448?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sebastien Rodriguez reopened AMQ-2448:
--------------------------------------

    Regression: [Regression]

Hi,
I'm encountering the exact same behavior in both 5.3 branch and development trunk.
I created a simple network of brokers with all the same configuration:
<networkConnector name="HA Queue" uri="static:(tcp://broker1:61616,tcp://broker2:61616,tcp://broker3:61616)?useExponentialBackOff=false" userName="system" password="manager" duplex="true" />
The disables exponential back off allows me to reproduce the memory leak faster.
I stop activemq in 2 out of the 3 brokers and get a memory leak: there is nearly one thread created per second. After a while, the activeMQ will just crash.

Here is the start of the dump heat, after only 20min of running:

--start--
org.apache.activemq.command.ActiveMQDestination[]	5003
org.apache.activemq.transport.ResponseCorrelator	3750
org.apache.activemq.util.IntSequenceGenerator 3750
org.apache.activemq.transport.MutexTransport 3750
org.apache.activemq.management.CountStatisticImpl 2548
org.apache.activemq.command.DataStructure[] 2512
org.apache.activemq.thread.Valve 2504
org.apache.activemq.command.BrokerId[] 2500
org.apache.activemq.util.DataByteArrayOutputStream 1269
org.apache.activemq.util.DataByteArrayInputStream 1266
org.apache.activemq.thread.DedicatedTaskRunner$1 1259
org.apache.activemq.thread.DedicatedTaskRunner 1259
org.apache.activemq.openwire.OpenWireFormat 1256
org.apache.activemq.util.LongSequenceGenerator 1254
org.apache.activemq.util.IdGenerator 1253
org.apache.activemq.command.WireFormatInfo 1251
org.apache.activemq.broker.TransportConnection 1250
org.apache.activemq.transport.WireFormatNegotiator 1250
org.apache.activemq.transport.InactivityMonitor$2 1250
org.apache.activemq.transport.vm.VMTransportServer$1 1250
org.apache.activemq.broker.TransportConnection$1 1250
org.apache.activemq.transport.InactivityMonitor$1 1250
org.apache.activemq.network.DemandForwardingBridgeSupport$2 1250
org.apache.activemq.transport.InactivityMonitor 1250
org.apache.activemq.transport.tcp.TcpTransport	 1250
org.apache.activemq.broker.region.ConnectionStatistics 1250
org.apache.activemq.network.DurableConduitBridge 1250
org.apache.activemq.network.DiscoveryNetworkConnector$1 1250
org.apache.activemq.network.DemandForwardingBridgeSupport$1 1250
org.apache.activemq.transport.vm.VMTransport 1250
org.apache.activemq.broker.SingleTransportConnectionStateRegister	 1249
org.apache.log4j.CategoryKey 194



> Memory leak when there are network connector retries to an unavailable broker
> -----------------------------------------------------------------------------
>
>                 Key: AMQ-2448
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2448
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.3.0
>         Environment: Debian Linux 5.0 amd64 with included Sun Java 6 JRE
>            Reporter: Alexander Fisher
>            Assignee: Gary Tully
>             Fix For: 5.3.1, 5.4.0
>
>         Attachments: activemq1.xml, activemq2.xml, activemq3.xml, activemq4.xml
>
>
> I've discovered a reproducible memory leak.  After discussion on IRC, it is believed to be related to my network of brokers configuration.
> I have a total of 4 brokers configured on 4 hosts (activemq1,2,3,4).
> activemq1 and activemq2 are a shared filesystem master slave pair.  activemq3 and activemq4 are setup in a similar way as a master/slave pair.
> Only one of activemq1 and 2 will be active at a time, likewise only one of activemq3 and 4.
> Both activemq1 and activemq2 have a config with the following networkConnector.
> <networkConnectors>
>                 <networkConnector
>                         uri="static://(tcp://activemq3:61616,tcp://activemq4:61616)"
>                         name="Connection to 3 and 4"
>                         networkTTL="5"
>                         dynamicOnly="true"/>
> </networkConnectors>
> The broker will only be able to connect to either 3 or 4 as only one can be running at a time.
> For obvious reasons, connecting to the slave will fail, but the connection attempt will be retried every 30 seconds by default (more often on initial startup due to backoff algorithm).
> It is believed that the continuous reconnect attempts are the source of the memory leak.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.