I am running a standalone broker with a simple configuration (shown at the
end of the message).
The issue I am seeing is that the broker memory usage keeps climbing and
eventually (3-4 days) the JVM runs out of memory
(java.lang.outofmemoryerror). I connected to the broker via jconsole and
found the following abnormal values for some of the broker attributes which
I suspect could be causing this problem:
QueueProducers: 16101 (this keeps growing)
TotalEnqueueCount: 32263
TotalDequeueCount: 16105 (the difference between enqueue and dequeue keeps
growing)
Though I have 4 known producers I am not sure why there are tens of
thousands of producers being shown. Also from the console I found that the
extra messages are being enqueued in the topic called
"ActiveMQ.Advisory.Producer.Queue.Management.Queue" which are never
dequeued. Any one knows what this is? I can turn off advisory messages but I
guess that shouldn't be necessary.
Also another strange thing is that all the three parameters (Store, Memory
and Temp) show as 0 in the console. If thousands of messages are not being
dequeued I'd expect them to be stored somewhere?
I am sure there is a simple mistake I am doing somewhere but I can't seem to
figure out what's wrong, any help would be greatly appreciated!
================
Queues: 1 queue with 4 producers and consumers
Topics: 1 topic with 3 producers, 1 consumer
Persistent Messaging: Yes
ActiveMQ broker version: 5.9.0 running on Ubuntu 12.04 with Sun JVM 1.7.0_51
ActiveMQ client version: varies but all of them < 5.9.0 (not sure if this
matters), one running on Ubuntu 12.04, rest on Windows 7 64 bit
JVM arguments: -Xms1G -Xmx1G
-Djava.util.logging.config.file=logging.properties -Dhawtio.realm=activemq
-Dhawtio.role=admins
-Dhawtio.rolePrincipalClasses=org.apache.activemq.jaas.GroupPrincipal
-Djava.security.auth.login.config=/opt/activemq/conf/login.config
-Dcom.sun.management.jmxremote.port=11099
-Dcom.sun.management.jmxremote.password.file=/opt/activemq/conf/jmx.password
-Dcom.sun.management.jmxremote.access.file=/opt/activemq/conf/jmx.access
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote
-Djava.awt.headless=true -Djava.io.tmpdir=/opt/activemq/tmp
-Dactivemq.classpath=/opt/activemq/conf; -Dactivemq.home=/opt/activemq
-Dactivemq.base=/opt/activemq -Dactivemq.conf=/opt/activemq/conf
-Dactivemq.data=/opt/activemq/data
Portions of activemq.xml configuration file:
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage percentOfJvmHeap="50" />
</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:61616?maximumConnections=1000橪;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp"
uri="stomp://0.0.0.0:61613?maximumConnections=1000橪;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
================
end of the message).
The issue I am seeing is that the broker memory usage keeps climbing and
eventually (3-4 days) the JVM runs out of memory
(java.lang.outofmemoryerror). I connected to the broker via jconsole and
found the following abnormal values for some of the broker attributes which
I suspect could be causing this problem:
QueueProducers: 16101 (this keeps growing)
TotalEnqueueCount: 32263
TotalDequeueCount: 16105 (the difference between enqueue and dequeue keeps
growing)
Though I have 4 known producers I am not sure why there are tens of
thousands of producers being shown. Also from the console I found that the
extra messages are being enqueued in the topic called
"ActiveMQ.Advisory.Producer.Queue.Management.Queue" which are never
dequeued. Any one knows what this is? I can turn off advisory messages but I
guess that shouldn't be necessary.
Also another strange thing is that all the three parameters (Store, Memory
and Temp) show as 0 in the console. If thousands of messages are not being
dequeued I'd expect them to be stored somewhere?
I am sure there is a simple mistake I am doing somewhere but I can't seem to
figure out what's wrong, any help would be greatly appreciated!
================
Queues: 1 queue with 4 producers and consumers
Topics: 1 topic with 3 producers, 1 consumer
Persistent Messaging: Yes
ActiveMQ broker version: 5.9.0 running on Ubuntu 12.04 with Sun JVM 1.7.0_51
ActiveMQ client version: varies but all of them < 5.9.0 (not sure if this
matters), one running on Ubuntu 12.04, rest on Windows 7 64 bit
JVM arguments: -Xms1G -Xmx1G
-Djava.util.logging.config.file=logging.properties -Dhawtio.realm=activemq
-Dhawtio.role=admins
-Dhawtio.rolePrincipalClasses=org.apache.activemq.jaas.GroupPrincipal
-Djava.security.auth.login.config=/opt/activemq/conf/login.config
-Dcom.sun.management.jmxremote.port=11099
-Dcom.sun.management.jmxremote.password.file=/opt/activemq/conf/jmx.password
-Dcom.sun.management.jmxremote.access.file=/opt/activemq/conf/jmx.access
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote
-Djava.awt.headless=true -Djava.io.tmpdir=/opt/activemq/tmp
-Dactivemq.classpath=/opt/activemq/conf; -Dactivemq.home=/opt/activemq
-Dactivemq.base=/opt/activemq -Dactivemq.conf=/opt/activemq/conf
-Dactivemq.data=/opt/activemq/data
Portions of activemq.xml configuration file:
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage percentOfJvmHeap="50" />
</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:61616?maximumConnections=1000橪;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp"
uri="stomp://0.0.0.0:61613?maximumConnections=1000橪;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
================