we're experiencing an OOM with heavy CPU usage at startup on an
activemq 4.0final release broker. we're connecting with activemq
4.0 final release client. We're using jencks message driven pojo's and
jencks outbound message pooling. Our config looks like this:
[...]
<bean id="jmsBootstrapContext" class="
org.jencks.factory.BootstrapContextFactoryBean">
<property name="threadPoolSize" value="10" />
</bean>
[....]
<bean id="jmsPoolingSupport" class="org.jencks.factory.SinglePoolFactoryBean
">
<property name="maxSize">
<value>30</value>
</property>
<property name="minSize">
<value>5</value>
</property>
<property name="blockingTimeoutMilliseconds">
<value>500</value>
</property>
[...]
We were seeing this OOM consistently this morning after the broker started
failing for unknown reasons and we restarted it. We're not sending very
many messages (6/second/process), but we're connecting to the broker with a
lot of processes. We have 22 processes connecting, all running the
configuration above. That's potentially 880 simultaneous connections to the
broker, but more realistically maybe 330. Is this likely to be a problem?
Do other people typically connect this many clients to a broker?
I ran kill -3 while the broker was OOM and consuming the CPU. there are
lots of threads that look like this:
"ActiveMQ Transport: tcp:///10.144.71.38:53513" daemon prio=1 tid=0x5e017188
nid
=0x2a2b waiting for monitor entry [0x52788000..0x52788780]
at
edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList.r
emove(CopyOnWriteArrayList.java:165)
- waiting to lock <0x6335cdd0> (a
edu.emory.mathcs.backport.java.util.co
ncurrent.CopyOnWriteArrayList)
at org.apache.activemq.broker.TransportConnector.onStopped
(TransportConn
ector.java:290)
at org.apache.activemq.broker.TransportConnection.stop(TransportConnecti
on.java:82)
at org.apache.activemq.util.ServiceSupport.dispose(
ServiceSupport.java:3
9)
at
org.apache.activemq.broker.AbstractConnection.serviceTransportExcepti
on(AbstractConnection.java :172)
at org.apache.activemq.broker.TransportConnection$1.onException
(Transpor
tConnection.java:68)
at org.apache.activemq.transport.TransportFilter.onException
(TransportFi
lter.java:94)
at org.apache.activemq.transport.ResponseCorrelator.onException
(Response
Correlator.java:120)
at org.apache.activemq.transport.TransportFilter.onException
(TransportFi
lter.java:94)
at org.apache.activemq.transport.TransportFilter.onException(TransportFi
lter.java:94)
I also ran jmap. Here's the top of the histogram:
Object Histogram:
Size Count Class description
-------------------------------------------------------
923908224 14096 org.apache.activemq.command.DataStructure[]
180613424 68212 byte[]
8106048 253314
edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap
$Segment
6926992 80479 char[]
4461856 58151 java.util.HashMap$Entry []
4063768 253312
edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap
$HashEntry[]
4053168 253323
edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantLo
ck$NonfairSync
3981208 36371 * ConstMethodKlass
3012240 125510 java.util.HashMap$Entry
2622552 36371 * MethodKlass
2325400 58135 java.util.HashMap
2119864 36717 java.lang.Object[]
2076464 48139 * SymbolKlass
1680408 70017 java.lang.String
1596296 2893 * ConstantPoolKlass
1266560 15832
edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap
$Segment[]
1195160 2893 * InstanceKlassKlass
1045808 2581 * ConstantPoolCacheKlass
934208 29194 org.apache.activemq.filter.DestinationMapNode
902224 56389
edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicBool
Any ideas? This is becoming a very critical issue for us and while we're
going to continue using activemq 4.0 for our release next week, we may get
paged a whole lot and have to wake up in the middle of the night to restart
if this issue continues to occur.
Thanks for any help.