activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pothier, Peter" <ppoth...@CROSSBEAMSYS.COM>
Subject RE: ActiveMQ 5.3.0 Memory Usage - Connections
Date Thu, 25 Mar 2010 13:28:11 GMT
Hi,

I finally figured out how to use jconsole remotely (I had a
misunderstanding
of what value to use in -Djava.rmi.server.hostname=<host>, using the
jconsole's
machine's IP address instead of the target).

Going back to running unit tests based on both libstomp and activemq-cpp
(2.2.1),
I can see, using jconsole, the Heap usage continuously rise (albeit with
a sawtooth),
and then reach its limit.  At this point the unit tests halt.  What
seems
the most interesting of all the Memory Pools is the "Tenured Gen" which
eventually
plateau's when the Used=Committed=Max.  The activemq.log, which
periodically has
the KahaDB slow messages or PageFile flush messages, suddenly stops.  No
interesting
messages.  (by the way I reduced the heap down to 64M to get it to
saturate quicker).

I'm not really sure where to look.  So I took a look at the MBeans.  The
AMQ-BROKER
attributes shows

         StorePercentUsage = 56
         TotalDequeueCount = 214618
         TotalEnqueueCount = 429046
         TotalMessageCount = 214428
         MemoryLimit = 20971520
         StoreLimit = 104857600
         TotalConsumerCount=2

I've read a little about the Total Enqueue/Message/Dequeue counters, but
still
don't understand how they relate to each other.  A picture would be
worth a
thousand words.

The setup is fairly simple right now, sending persistent messages.

     Producer - - > JMS Queue - - > Server - - > JMS Durable Topic - - >
Consumer

The Queue shows

         DequeueCount = 214618
         DispatchCount = 214618
         EnqueCount = 214618
         MemoryPercentUsage = 0

The Topic seems more interesting

         DequeueCount = 0
         DispatchCount = 214236
         EnqueueCount = 214428
         MemoryPercentUsage = 0


Is it strange that the Dequeue Count for the Topic is zero?  I know the
consumer of the Topic is receiving messages.  Why would the Dequeue
Count
be zero?  Is the consumer suppose to be doing something that it's not?

Any other places in jconsole I should be looking to determine where all
the heap is going?

Thanks!

Peter P


-----Original Message-----
From: Peter P [mailto:ppothier@crossbeamsys.com] 
Sent: Wednesday, March 17, 2010 5:56 PM
To: users@activemq.apache.org
Subject: ActiveMQ 5.3.0 Memory Usage - Connections


Hi,

We are using ActiveMQ 5.3.0, with both libstomp and ActiveMQ-CPP
producer
and consumer clients,
sending persistent messages to both queues and topics.  We have noticed
the
amount of memory used
by ActiveMQ (reported by linux top) grows over time.

Trying to determine whether the memory grew in response to messages or
connections, we noticed
using a python script based on stomppy-2.0.4-1cb, that ActiveMQ memory
grew
rather quickly when
we connected and disconnected multiple times.

Here's the basis of the script

   for i in range (0,1000) :
      conn = stomp.Connection()
      conn.set_listener('', MyListener())
      conn.start()
      conn.connect()
      conn.disconnect()

Using jmap/jhat, here's the most popular Instance Counts and Histogram
prior
to running the script

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

 29892 root      19   0  823m  95m  10m S  0.0  2.4   0:07.86 java 


All Classes (excluding platform)
Class 	Instance Count 	Total Size
class [B 	6288 	7214080
class [C 	26005 	2285484
class [I 	4775 	916612
class java.lang.reflect.Method 	6971 	899259
class java.lang.Class 	4802 	691488
class java.lang.String 	25732 	514640
class [Ljava.util.HashMap$Entry; 	3240 	514504
class [S 	6384 	396498
class [Ljava.lang.Object; 	4263 	378984
class [Lorg.apache.activemq.command.DataStructure; 	2 	262160
class java.util.LinkedHashMap$Entry 	4471 	196724


Instance Counts for All Classes (including platform)
26005 instances of class [C
25732 instances of class java.lang.String
6971 instances of class java.lang.reflect.Method
6741 instances of class [Ljava.lang.Class;
6384 instances of class [S
6288 instances of class [B
5806 instances of class java.util.HashMap$Entry
4802 instances of class java.lang.Class
4775 instances of class [I
4471 instances of class java.util.LinkedHashMap$Entry
4263 instances of class [Ljava.lang.Object;




and after running the script a bunch of times




  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

29892 root      18   0  880m 153m  10m S  0.0  3.9   0:35.62 java

Heap Histogram

All Classes (excluding platform)
Class 	Instance Count 	Total Size
class [B 	9880 	16696961
class [C 	32597 	3238584
class [I 	4823 	2948344
class java.util.concurrent.ConcurrentHashMap$Segment 	65216 	2086912
class java.util.concurrent.locks.ReentrantLock$NonfairSync 	66712
1867936
class [Ljava.util.concurrent.ConcurrentHashMap$HashEntry; 	65216
1570048
class [Ljava.util.HashMap$Entry; 	6575 	1022200
class java.lang.reflect.Method 	6895 	889455
class java.lang.Class 	4832 	695808
class java.lang.String 	31143 	622860
class [Ljava.util.concurrent.ConcurrentHashMap$Segment; 	4076
586944
class org.apache.activemq.command.ActiveMQMessage 	1812 	467496
class [S 	6077 	370234
class java.util.HashMap$Entry 	11704 	327712
class [Ljava.lang.Object; 	5130 	318360
class java.net.SocksSocketImpl 	1755 	282555
class [Lorg.apache.activemq.command.DataStructure; 	2 	262160
class java.util.HashMap 	5182 	248736
class java.util.concurrent.ConcurrentHashMap 	4076 	228256
class java.util.LinkedHashMap$Entry 	4155 	182820

Instance Counts for All Classes (including platform)
66712 instances of class
java.util.concurrent.locks.ReentrantLock$NonfairSync
65216 instances of class java.util.concurrent.ConcurrentHashMap$Segment
65216 instances of class
[Ljava.util.concurrent.ConcurrentHashMap$HashEntry;
32597 instances of class [C
31143 instances of class java.lang.String
11704 instances of class java.util.HashMap$Entry
9880 instances of class [B
9371 instances of class java.lang.Object
6895 instances of class java.lang.reflect.Method
6575 instances of class [Ljava.util.HashMap$Entry;
6143 instances of class [Ljava.lang.Class;
6077 instances of class [S
5182 instances of class java.util.HashMap
5130 instances of class [Ljava.lang.Object;
4832 instances of class java.lang.Class
4823 instances of class [I




Here are the diffs between our config file and activemq-demo.xml



51c51
<     <broker xmlns="http://activemq.apache.org/schema/core"
brokerName="amq-broker" useJmx="true">
---
>     <broker xmlns="http://activemq.apache.org/schema/core"
> brokerName="amq-broker" persistent="true" useJmx="true">
68c68
<                     <policyEntry queue=">" producerFlowControl="true"
memoryLimit="5mb"/>
---
>                     <policyEntry queue=">" producerFlowControl="false"
> memoryLimit="5mb"/>
76a77,79
>                         <messageEvictionStrategy>
>                              <oldestMessageEvictionStrategy/>
>                         </messageEvictionStrategy>
81d83
<                             -->
82a85,87
>                             <timedSubscriptionRecoveryPolicy
> recoverDuration="60000" /> 
>                             -->
>                             <fixedCountSubscriptionRecoveryPolicy 
> maximumSize="300" /> 
83a89
> 
88a95,96
> 
> 
197c205
<             <!-- Create a TCP transport that is advertised on via an
IP
multicast 
---
>             <!-- Create a TCP transport that is NOT advertised on via
an
> IP multicast 
199c207
<             <transportConnector name="openwire"
uri="tcp://localhost:61616" discoveryUri="multicast://default"/>
---
>             <transportConnector name="openwire"
>
uri="tcp://localhost:61616?transport.keepAliveResponseRequired=true;wire
Format.tcpNoDelayEnabled=true"/>
204c212
<             <transportConnector name="stomp"
uri="stomp://localhost:61613"/>
---
>             <transportConnector name="stomp"
> uri="stomp://localhost:61613?wireFormat.tcpNoDelayEnabled=true"/>
208a217,219
> 
> 
> 
325c336,337
< </beans>
\ No newline at end of file
---
> 
> </beans>


Checking the ActiveMQ 5.3.1 Fixed Issues page

     http://issues.apache.org/activemq/browse/AMQ/fixforversion/12183

this sounds different from any issue.

We run with only a single instance of ActiveMQ.

Are there any configuration parameters that controls this behavior?
Does ActiveMQ normally grow this large, cleaning up periodically?

Is this normal behavior?  Is there something I should be looking for?

Thanks,

Peter P


-- 
View this message in context:
http://old.nabble.com/ActiveMQ-5.3.0-Memory-Usage---Connections-tp279378
10p27937810.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message