Interesting. Your scenario sounds like PFC is blocking the connection. Not sure yet why that would happen. Your config looks okay. Do you still have the thread dumps?
Are the producer/consumer on the same connection? If you have a test case you can post, please do. Would make it easy to figure what the problem is. On Tue, Dec 4, 2012 at 2:01 PM, Tomáš Martinec < tomas.marti...@d3s.mff.cuni.cz> wrote: > Hello, > > 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 http://svn.apache.org/viewvc/**activemq/tags/activemq-5.4.2/** > activemq-core/src/main/java/**org/apache/activemq/broker/** > region/Queue.java?view=markup<http://svn.apache.org/viewvc/activemq/tags/activemq-5.4.2/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java?view=markup>. > > > The thread that stores messages into the queue waits on the line 219 of > http://svn.apache.org/viewvc/**activemq/tags/activemq-5.4.2/** > activemq-core/src/main/java/**org/apache/activemq/broker/**region/cursors/ > **FilePendingMessageCursor.java?**view=markup<http://svn.apache.org/viewvc/activemq/tags/activemq-5.4.2/activemq-core/src/main/java/org/apache/activemq/broker/region/cursors/FilePendingMessageCursor.java?view=markup>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. > Tomas > > Here is the configuration of the broker: > > <beans > > xmlns="http://www.**springframework.org/schema/**beans<http://www.springframework.org/schema/beans> > " > > xmlns:amq="http://activemq.**apache.org/schema/core<http://activemq.apache.org/schema/core> > " > > xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance> > " > > xsi:schemaLocation="http://**www.springframework.org/**schema/beans<http://www.springframework.org/schema/beans> > http://www.springframework.**org/schema/beans/spring-beans-**2.0.xsd<http://www.springframework.org/schema/beans/spring-beans-2.0.xsd> > > http://activemq.apache.org/**schema/core<http://activemq.apache.org/schema/core> > http://activemq.apache.org/**schema/core/activemq-core.xsd<http://activemq.apache.org/schema/core/activemq-core.xsd> > "**> > > <!-- Allows us to use system properties as variables in this > configuration file --> > <bean > class="org.springframework.**beans.factory.config.**PropertyPlaceholderConfigurer" > /> > > <!-- > The <broker> element is used to configure the ActiveMQ broker. > > advisories incurr a hit with every add connection|destination|** > producer|consumer > - client side: providerUrl = tcp://localhost:61616?jms.** > watchTopicAdvisories=false > 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 > -Djava.util.logging.config.**file=logging.properties -XX:+UseLargePages" > --> > <broker > xmlns="http://activemq.apache.**org/schema/core<http://activemq.apache.org/schema/core>" > brokerName="localhost" > dataDirectory="/dasd/martinec/**kahadb-storage/activemq-data" > destroyApplicationContextOnSto**p="true" > deleteAllMessagesOnStartup="**true" > advisorySupport="false" > enableStatistics="false" > schedulerSupport="false" > useJmx="true" > persistent="true"> > > <destinationPolicy> > <policyMap> > <policyEntries> > <!-- > 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"> > > </policyEntry> > </policyEntries> > </policyMap> > </destinationPolicy> > > <!-- > 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: > > > http://activemq.apache.org/**jmx.html<http://activemq.apache.org/jmx.html> > --> > <managementContext> > <managementContext createConnector="true" connectorPort="1399" > rmiServerPort="1399"/> > </managementContext> > > <persistenceAdapter> > <kahaPersistenceAdapter directory="/dasd/martinec/** > kahadb-storage"/> > </persistenceAdapter> > > <systemUsage> > <systemUsage> > <memoryUsage> > <!-- the only queue has 50 mb, so this should be > enough --> > <memoryUsage limit="200 mb"/> > </memoryUsage> > <storeUsage> > <!-- no special reason for this --> > <storeUsage limit="1 gb"/> > </storeUsage> > <tempUsage> > <!-- this MUST be above the journal file size; see > http://tmielke.blogspot.cz/**2011/02/observations-on-** > activemqs-temp-storage.html<http://tmielke.blogspot.cz/2011/02/observations-on-activemqs-temp-storage.html> > --> > <tempUsage limit="100 mb"/> > </tempUsage> > </systemUsage> > </systemUsage> > > <!-- > The transport connectors expose ActiveMQ over a given protocol > to > clients and other brokers. For more information, see: > > > http://activemq.apache.org/**configuring-transports.html<http://activemq.apache.org/configuring-transports.html> > --> > <transportConnectors> > <transportConnector name="openwire" uri="tcp://0.0.0.0:61616 > "/> > </transportConnectors> > </broker> > > <import resource="jetty.xml"/> > > </beans> > -- *Christian Posta* http://www.christianposta.com/blog twitter: @christianposta