You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by fehm <Fe...@cern.ch> on 2009/06/24 10:58:36 UTC

ActiveMQ Thread Management

Hi,

I'm currently fighting a bit with having 5000+ topics and persistence
enabled for an ActiveMQ 5.3 Broker. In fact, in this scenario is not a
problem with persistence is switched off. The broker has no problems (well
if you give him enough memory, say >1Gb) to handle all the topics even when
advisory topics are switched on.

Now, my first question: If I just create an amqPersistenceAdapter adapter
which is referenced by the broker but don't enable persistence
(persistence="false"), already files are created in the data directory.
What exactly is stored here?


Secondly, if I finally do enable persistence the number of threads equals
more or less the number of topics I created (2000Topics -> 2086 threads). I
imagine that for each Thread a "persistence thread" is created. Is this
correct ? If so, how can I disable this behavior (e.g. like the
-Dorg.apache.activemq.UseDedicatedTaskRunner=false).
As soon as I try to create >3000 topics, the broker throws OOME when
creating a new thread and even dies rapidly after a while. However, the heap
memory usage does not exceed the Xmx limit (1400GB) but stays calm at 300M


The Test Scenario:
40 Connections to Broker, sharing 20.000 Subscriptions on 5000 Topics ( each
topic is subscribed 4 times, each connection keeps 500 MessageListeners.
Sessions are created with DUPS_OK and messages are send in NON_PERSISTENCE
mode.
This is the connection parameters for the clients:
jms.copyMessageOnSend=false&jms.dispatchAsync=false&wireformat.tcpNoDelayEnabled=true&wireFormat.maxInactivityDuration=10000&wireFormat.tightEncodingEnabled=false&jms.optimizedDispatch=true
I've also attached the Broker configuration.


Maybe I understood this wrong, but if I want the Broker to swap messages to
disk whenever memory becomes full I have to enable persistence on the broker
side. This is independent from the message, isn't it ?


I'd be very glad, if someone can help me here to understand and solve this
problem.


Thanks a  lot,
Felix


p.s.
In general I found this documentation quite useful :
http://fusesource.com/wiki/display/ProdInfo/Understanding+the+Threads+Allocated+in+ActiveMQ.

http://www.nabble.com/file/p24181021/activemq.xml activemq.xml 
-- 
View this message in context: http://www.nabble.com/ActiveMQ-Thread-Management-tp24181021p24181021.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.