activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Davies <rajdav...@gmail.com>
Subject Re: ActiveMQ 5.3.0 Memory Usage - Connections
Date Thu, 25 Mar 2010 13:39:29 GMT
This could be due to https://issues.apache.org/activemq/browse/AMQ-2512 - could you try 5.3.1
?

On 25 Mar 2010, at 13:28, Pothier, Peter wrote:

> 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