Hello. I have a question regarding the ActiveMQ temp usage. (The ActiveMQ version is 5.10.0 but also checked with latest 5.13.2; as storage I´ve tested with KahaDb and mKahadb) In our system we have some queues and topics. The topics has persistent messages; the queues has combinations of persistent and non-persistent messages (also mixed in one queue). The producer flow control is turned off due to performance considerations on the producer side.
My understanding is, that persistent messages are stored via fileCursor in the files. And now to the observations in a running system: - the topic (ServerPushTopic) gets "a lot" of messages in a short amount of time (approx. 5000/minute at peak times) -- the consumer is relatively slow -- the producers are typically demon jobs which produces the vast amount of messages; but also UI interactions - the other queues are randomely accessed by producers and consumers; both sides fast - the messages are a mix of text and object messages; but typically really small The "enqueued" count of the ServerPushTopic increases fast; the dequeued count only slow because of the slow consumers. After some time (dependend on the system usage configuration) we get following error messages: <javax.jms.ResourceAllocationException: Temp Store is Full (100% of xxxxxxxx). Producer (ID:hostname-xxxx) stopped to prevent flooding queue://PLC.Queue. See http://activemq.apache.org/producer-flow-control.html for more info> If I look in the temp files of the KahaDb (./data/tmp_storage) I see mostly topic messages of ServerPushTopic inside. But: why are these messages stored in the temp files and not in the persistent memory of KahaDb? (Remember: messages to ServerPushTopic are persistent.) I´ve already tried a lot of configuration options for the ServerPushTopic, for example: - pendingSubscriberPolicy - pendingDurableSubscriberPolicy - slowConsumerStrategy - and a lot of combinations thereof The system usage part of the broker.xml (values are trimmed down to reproduce the 100% temp store error faster; on production side, these values are of course much higher.) <systemUsage> <systemUsage sendFailIfNoSpace="true"> <memoryUsage> <memoryUsage limit="96 mb"/> </memoryUsage> <storeUsage> <storeUsage limit="5000 mb"/> </storeUsage> <tempUsage> <tempUsage limit="256 mb"/> </tempUsage> </systemUsage> </systemUsage> The only way I could get around this problem is to enable the producerFlowControl; but as mentioned earlier I´d really like to have it turned off because of performance reasons on the producer side. Could someone please explain, why the ServerPushTopic messages are stored into the tempUsage and causes the mentioned error? Best regards Joachim -- View this message in context: http://activemq.2283324.n4.nabble.com/Clarification-of-temp-usage-tp4711305.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.