Hello, after several days of testing, i am facing the following issue : I am unable to limit the physical space of temp storage used by AMQ, and temp_store is growing ever and ever...
=========================== = Scenario : =========================== - One JVM, handling several producers, spamming the broker. - One JVM, embedding the broker, with several consumers. - All message are as DeliveryMode.NON_PERSISTENT =========================== = Configuration (resumed) =========================== - AMQ.maxFileLength=67108864 - <memoryUsage limit="128mb"/> - <storeUsage limit="88mb" store="#store" /> - <tempUsage limit="160mb"/> - <policyEntry queue=">" producerFlowControl="false" memoryLimit="64mb"/> This should means, based on my understanding : - The temp store is limited to 88mb - Each temp file is 64 mb, so i should have 1 (or 2) temp files maximum 1) ISSUE1 : After flooding the broker, i have massive files into temp directory, enforcing activemq configuration... I have followed several post recommandations, including "http://open-source-adventures.blogspot.com/2009/01/limiting-disk-store-usage-with-active.html", without any success. 2) ISSUE2 : The maxFileLegth has no effect, since i have massive flood of 32 MB "data-TopicSubscription-XXX" files inside "tmp_storage" folder. Someone may have a solution here (i hope...). Thanks by advance! Regards. =========================== = JMX on start =========================== - Broker.Memory = 134217728 - Broker.StoreLimit = 92274688 - Broker.TempLimit = 167772160 - Queue.MemoryLimit = 67108864 =========================== = JMX while running =========================== - Broker.MemoryPercentUsage = 320 (???) - Broker.StorePercentUsage = 0 (logic, i am not using persistent senders) - Broker.TempPercentUsage = 0 (not logic : i have plenty of temp store files) - Queue.MemoryPercentUsage = 0 (???) - Queue.CursorMemoryUsage=435215400 - Queue.CursorPercentUser=324 (???) =========================== = ActiveMQ full configuration : =========================== <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 http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.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:C:\xxx\Experimental\maven.1236678842549\src\test\resources\jms2\activemq.properties</value> </property> </bean> <!-- The store, declared as bean due to http://issues.apache.org/activemq/browse/AMQ-2064 --> <bean id="store" class="org.apache.activemq.store.amq.AMQPersistenceAdapter"> <!-- Data directory --> <property name="directory" value="${activemq.base}/data"/> <!-- 64 mb --> <property name="maxFileLength" value="67108864"/> <!-- References to files --> <property name="persistentIndex" value="true"/> </bean> <!-- The broker --> <broker xmlns="http://activemq.apache.org/schema/core" persistent="true" advisorySupport="false" useJmx="true" brokerName="LCH.TEST" monitorConnectionSplits="false" splitSystemUsageForProducersConsumers="false" start="false" persistenceAdapter="#store"> <!-- Destination specific policies using destination names or wildcards --> <destinationPolicy> <policyMap> <policyEntries> <!-- *** producerFlowControl=false --> <!-- When this is added, all your queues will start persisting their messages to the disk. --> <!-- Freeing your RAM to consume more messages w/o any slowdowns. --> <!-- *** memoryLimit : Per queue memory limit --> <policyEntry queue=">" producerFlowControl="false" memoryLimit="64mb"/> </policyEntries> </policyMap> </destinationPolicy> <!-- The transport connectors ActiveMQ will listen to --> <transportConnectors> <transportConnector name="LCH" uri="nio://MIYOPC65:61616"/> </transportConnectors> <!-- Use the following to configure how ActiveMQ is exposed in JMX --> <managementContext> <managementContext createConnector="true"/> </managementContext> <!-- The maximum about of space the broker will use before slowing down producers --> <!-- sendFailIfNoSpace : If no more is available, send client a JMS exception --> <systemUsage> <systemUsage sendFailIfNoSpace="true"> <!-- Memory usage max --> <memoryUsage> <!-- Sets the memory limit in bytes (broker global). Setting the limit in bytes will set the usagePortion to 0 --> <memoryUsage limit="128mb"/> </memoryUsage> <!-- Storage is used for those messages that have been sent PERSISTENT --> <storeUsage> <!-- Sets the memory limit in bytes (broker global). Setting the limit in bytes will set the usagePortion to 0 --> <storeUsage limit="88mb" store="#store" /> </storeUsage> <!-- Temporary storage is used for spooling out messages that have been sent NON_PERSISTENT --> <tempUsage> <!-- Sets the memory limit in bytes (broker global). Setting the limit in bytes will set the usagePortion to 0 --> <tempUsage limit="160mb"/> </tempUsage> </systemUsage> </systemUsage> </broker> <!-- ** Lets configure some Camel endpoints ** ** http://activemq.apache.org/camel/components.html --> <!-- configure the camel activemq component to use the current broker --> <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> <property name="connectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="vm://localhost?create=false&waitForStart=10000"/> <property name="userName" value="${activemq.username}"/> <property name="password" value="${activemq.password}"/> </bean> </property> </bean> </beans> -- View this message in context: http://www.nabble.com/ActiveMQ---Unable-to-limit-temp-store-tp24309792p24309792.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.
