ActiveMQ生成器生成heapdump

时间:2014-03-04 22:41:21

标签: java activemq fuseesb heap-dump jbossfuse

我们在IBM AIX机器上使用Jboss FuseESB Active MQ。我们每天向消费者发送最多10000个请求。每个请求大小约为10Kb。我们每隔3天就会进行堆转储。这是IBM Heap Analyzer的图像。

在生成堆之前,我认为消费者会慢慢处理JMS消息。什么是提高JMS消费者处理速度的策略。

修改

以下是堆分析器的图像:

enter image description here

修改

我们正在使用嵌入式代理。这是我们正在使用的activemq.xml:

<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="http://activemq.apache.org/schema/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org /schema/beans/spring-beans-2.0.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

<!-- Allows us to use system properties and fabric as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="properties">
        <bean class="org.fusesource.mq.fabric.ConfigurationProperties"/>
    </property>      
</bean>

<broker xmlns="http://activemq.apache.org/schema/core"
        brokerName="${broker-name}"
        dataDirectory="${data}"
        start="false">

    <destinationPolicy>
        <policyMap>
          <policyEntries>
            <policyEntry topic=">" producerFlowControl="true">
              <pendingMessageLimitStrategy>
                <constantPendingMessageLimitStrategy limit="1000"/>
              </pendingMessageLimitStrategy>
            </policyEntry>
            <policyEntry queue=">" producerFlowControl="true" queuePrefetch="1">
                  <deadLetterStrategy>
                       <individualDeadLetterStrategy queuePrefix="DLQ."/>
                  </deadLetterStrategy>
            </policyEntry>
          </policyEntries>
        </policyMap>
    </destinationPolicy>

    <managementContext>
        <managementContext createConnector="false"/>
    </managementContext>

    <persistenceAdapter>
        <kahaDB directory="${data}/kahadb"/>
    </persistenceAdapter> 


<!--

<plugins>
        <jaasAuthenticationPlugin configuration="karaf" />
    </plugins>
-->
    <systemUsage>
        <systemUsage>
            <memoryUsage>
                <memoryUsage limit="128 mb"/>
            </memoryUsage>
            <storeUsage>
                <storeUsage limit="100 gb"/>
            </storeUsage>
            <tempUsage>
                <tempUsage limit="50 gb"/>
            </tempUsage>
        </systemUsage>
    </systemUsage>


    <transportConnectors>
        <transportConnector name="openwire" uri="tcp://0.0.0.0:0?maximumConnections=1000"/>
    </transportConnectors>
</broker>
</beans>

1 个答案:

答案 0 :(得分:0)

是否有可能存在任何未启动的Queue和/或持久主题订阅者以及他们的消息是否在JMS代理中持久存在?

您应该浏览JMS目标,例如使用JMX,并识别消息及其使用者。如果您检查了每个使用者是否已正确配置并正在运行,请调试缓慢消耗消息的原因。