rajdavies wrote:
> 
> FileCursor and Kaha (which is  
> used by the AMQStore). - can you share the configuration you are using?
> KahaDB isn't the same as Kaha 
> 

I'm still unsure... I'm using KahaDB, not AMQStore. I was about to go back
to AMQStore as this setup just isn't working, but I really like the way that
it works with the shared disk HA configuration. It's nice and simple.

A quick explanation first:
Data flows unidirectionally on a queue, communications and control are
bi-directional on topics. The test config has 2 brokers, both in a shared
disk HA setup, as described in the book. All 4 configs are the same, except
for the obvious differences in transport and broker name.
The /amq filesystem is NFS4
For my test I'm using the consumer and producer example that ships with AMQ.
I have producer flow control enabled, but it's actually the consumers that
are stalling.

<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at
   
    http://www.apache.org/licenses/LICENSE-2.0
   
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<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 as variables in this
configuration file -->
    <bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value>file:${activemq.base}/conf/credentials.properties</value>
        </property>      
    </bean>

    <!-- 
        The <broker> element is used to configure the ActiveMQ broker. 
    -->
    <broker xmlns="http://activemq.apache.org/schema/core";
brokerName="test.shore" dataDirectory="/amq/shore" useJmx="true">
      <networkConnectors>
                <networkConnector
uri="static:(tcp://testmq1:61616,tcp://testmq2:61616)"
                        name="QtoDC"
                        duplex="false"
                        conduitSubscriptions="true"
                        decreaseNetworkConsumerPriority="false">
                        <excludedDestinations>
                                <topic physicalName=">"/>
                        </excludedDestinations>
                </networkConnector>
                <networkConnector
uri="static:(tcp://testmq1:61616,tcp://testmq2:61616)"
                        name="T_comms"
                        duplex="true">
                        <excludedDestinations>
                                <queue physicalName=">"/>
                        </excludedDestinations>
                </networkConnector>
        </networkConnectors>
        
        <!-- 
            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 
        -->
        <managementContext>
            <managementContext createConnector="true"/>
        </managementContext>

        <!-- 
            Configure message persistence for the broker. The default
persistence
            mechanism is the KahaDB store (identified by the kahaDB tag). 
            For more information, see: 
            
            http://activemq.apache.org/persistence.html 
        -->
        <persistenceAdapter>
            <kahaDB directory="/amq/shore/kahadb"/>
        </persistenceAdapter>
        
        
        <!--
                        For better performances use VM cursor and small memory 
limit.
                        For more information, see:
            
            http://activemq.apache.org/message-cursors.html
            
            Also, if your producer is "hanging", it's probably due to
producer flow control.
            For more information, see:
            http://activemq.apache.org/producer-flow-control.html
        -->
              
        <destinationPolicy>
            <policyMap>
              <policyEntries>
                <policyEntry topic=">" producerFlowControl="false"
memoryLimit="1mb">
                  <pendingSubscriberPolicy>
                    <vmCursor />
                  </pendingSubscriberPolicy>
                </policyEntry>
                <policyEntry queue=">" producerFlowControl="false"
memoryLimit="1mb">
                  <!-- Use VM cursor for better latency
                       For more information, see:
                       
                       http://activemq.apache.org/message-cursors.html
                       
                  <pendingQueuePolicy>
                    <vmQueueCursor/>
                  </pendingQueuePolicy>
                  -->
                </policyEntry>
              </policyEntries>
            </policyMap>
        </destinationPolicy> 
 
         <!--
            The systemUsage controls the maximum amount of space the broker
will 
            use before slowing down producers. For more information, see:
            
            http://activemq.apache.org/producer-flow-control.html
             
        <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="20 mb"/>
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="1 gb" name="foo"/>
                </storeUsage>
                <tempUsage>
                    <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 
        -->
        <transportConnectors>
            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
        </transportConnectors>

    </broker>

    <!-- 
        Uncomment to enable Camel
        Take a look at activemq-camel.xml for more details
         
    <import resource="camel.xml"/>
    -->

    <!-- 
        Enable web consoles, REST and Ajax APIs and demos
        Take a look at activemq-jetty.xml for more details 
    -->
    <import resource="jetty.xml"/>
    
</beans>



-- 
View this message in context: 
http://old.nabble.com/OOM-with-high-KahaDB-index-time-tp27217704p27244867.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to