activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tomáš Martinec <>
Subject Activemq 5.4.2 hangs when the temp disk usage is used
Date Tue, 04 Dec 2012 21:01:29 GMT

I am trying to setup activemq 5.4.2 and I experience hangs when the 
broker fills its heap and starts using storage. In my scenario I have 
one message producer and one message consumer connected. The producer is 
blocked and the consumer does not receive any messages. I have been able 
to run the broker under debug mode and identify what the relevant 
threads are doing:

The task for iteration of the queue waits for the messagesLock on the 
line 1404 in

The thread that stores messages into the queue waits on the line 219 of

for free space. Note that the thread has the messagesLock locked and the 
temporaly usage is always 103%, and therefore, it never returns.

Is it possible that I encountered something like a deadlock? Perhaps, I 
messed up something in the configuration.

I will be thankful for advice.

Here is the configuration of the broker:


     <!-- Allows us to use system properties as variables in this 
configuration file -->

         The <broker> element is used to configure the ActiveMQ broker.

         advisories incurr a hit with every add 
           - client side:  providerUrl = 
         statistics have a small impact on concurrency so disable
         schedualer has a small impact as it checks for the presence 
three properties on each message
         jmx adds a bunch of wrapper classes

         ACTIVEMQ_OPTS_MEMORY="-Xmx11g -Xms6g 
-Dorg.apache.activemq.UseDedicatedTaskRunner=false -XX:+UseLargePages"
     <broker xmlns="" 

                     producerFlowControll thread unnecessary with no 
memory limits
                     with no failover, no need to suppress duplicates so 
audit can be disabled
                     message expiry thread unnecessary as normal 
dispatch will handle expiry
                 <policyEntry topic=">" producerFlowControl="false" 
enableAudit="false" expireMessagesPeriod="0"></policyEntry>
                 <policyEntry queue=">" producerFlowControl="true" 
memoryLimit="50mb" enableAudit="false" expireMessagesPeriod="0">


             The managementContext is used to configure how ActiveMQ is 
exposed in
             JMX. By default, ActiveMQ uses the MBean server that is 
started by
             the JVM. For more information, see:

             <managementContext createConnector="true" 
connectorPort="1399" rmiServerPort="1399"/>

	    <kahaPersistenceAdapter directory="/dasd/martinec/kahadb-storage"/>

	            <!-- the only queue has 50 mb, so this should be enough -->
		    <memoryUsage limit="200 mb"/>
	            <!-- no special reason for this -->
		    <storeUsage limit="1 gb"/>
	            <!-- this MUST be above the journal file size; see
		    <tempUsage limit="100 mb"/>

             The transport connectors expose ActiveMQ over a given 
protocol to
             clients and other brokers. For more information, see:

             <transportConnector name="openwire" uri="tcp://"/>

     <import resource="jetty.xml"/>


View raw message