Return-Path: X-Original-To: apmail-activemq-users-archive@www.apache.org Delivered-To: apmail-activemq-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5A5B57531 for ; Thu, 11 Aug 2011 18:42:56 +0000 (UTC) Received: (qmail 19292 invoked by uid 500); 11 Aug 2011 18:42:53 -0000 Delivered-To: apmail-activemq-users-archive@activemq.apache.org Received: (qmail 18830 invoked by uid 500); 11 Aug 2011 18:42:52 -0000 Mailing-List: contact users-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@activemq.apache.org Delivered-To: mailing list users@activemq.apache.org Received: (qmail 18616 invoked by uid 99); 11 Aug 2011 18:42:52 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 11 Aug 2011 18:42:52 +0000 X-ASF-Spam-Status: No, hits=2.4 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,SPF_SOFTFAIL,T_TO_NO_BRKTS_FREEMAIL,URI_HEX X-Spam-Check-By: apache.org Received-SPF: softfail (athena.apache.org: transitioning domain of itchy75@hotmail.fr does not designate 216.139.236.26 as permitted sender) Received: from [216.139.236.26] (HELO sam.nabble.com) (216.139.236.26) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 11 Aug 2011 18:42:47 +0000 Received: from joe.nabble.com ([192.168.236.139]) by sam.nabble.com with esmtp (Exim 4.72) (envelope-from ) id 1QraD4-0003nO-4J for users@activemq.apache.org; Thu, 11 Aug 2011 11:42:26 -0700 Date: Thu, 11 Aug 2011 11:42:26 -0700 (PDT) From: william To: users@activemq.apache.org Message-ID: <1313088146123-3736771.post@n4.nabble.com> Subject: Performance issue during stress MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, I am testing ActiveMQ 5.5 with my own stress test. I tried to implement a stress test that use jms ressource in the same fashion that my application would do. For that, I used jdbc template (spring) and pooled connection factory (as recommended). I run a fixed number of thread that plublish on fixed number of topics. Each thread pick up a topic and enter a loop that will send a message on the choosen topic. The performance are good when I have number of thread = number of topic (meaning each thread has a topic and topic are not shared amoung threads). But when I test with number of thread > number of topic the performance are not so good. When I look at VisualVM I have seen a lot of red in transport thread used by the producers and when I make a thread dump I can see that there are BLOCKED threads. Does anyone has seen this problem before ? Can it be due to the use of anonymous producer (I mean a in my test a producer does not have a specific destination). Here is a snapshot of locks I found : java.lang.Thread.State: BLOCKED (on object monitor) at org.apache.activemq.broker.region.Topic.doMessageSend(Topic.java:423) - waiting to lock <0xfffffffefaf38878> (a org.apache.activemq.broker.region.Topic) at org.apache.activemq.broker.region.Topic.send(Topic.java:404) at org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:365) at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:523) at org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:96) at org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:227) at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:129) at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:129) at org.apache.activemq.security.AuthorizationBroker.send(AuthorizationBroker.java:192) at org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:135) at org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:458) at org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:681) at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:306) at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179) at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69) at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:227) - locked <0xfffffffefb3fd740> (a org.apache.activemq.transport.InactivityMonitor$1) at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:220) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:202) at java.lang.Thread.run(Thread.java:619) java.lang.Thread.State: BLOCKED (on object monitor) at org.apache.activemq.broker.region.AbstractRegion.getDestinationMap(AbstractRegion.java:222) - waiting to lock <0xfffffffef9c49d28> (a java.lang.Object) at org.apache.activemq.broker.region.RegionBroker.getDestinationMap(RegionBroker.java:134) at org.apache.activemq.broker.BrokerFilter.getDestinationMap(BrokerFilter.java:69) at org.apache.activemq.broker.BrokerFilter.getDestinationMap(BrokerFilter.java:69) at org.apache.activemq.broker.BrokerFilter.getDestinationMap(BrokerFilter.java:69) at org.apache.activemq.broker.BrokerFilter.getDestinationMap(BrokerFilter.java:69) at org.apache.activemq.security.AuthorizationBroker.addDestination(AuthorizationBroker.java:62) at org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:151) at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:502) at org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:96) at org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:227) at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:129) at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:129) at org.apache.activemq.security.AuthorizationBroker.send(AuthorizationBroker.java:192) at org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:135) at org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:458) at org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:681) at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:306) at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179) at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69) at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:227) - locked <0xfffffffefc20b520> (a org.apache.activemq.transport.InactivityMonitor$1) at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:220) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:202) at java.lang.Thread.run(Thread.java:619) -- View this message in context: http://activemq.2283324.n4.nabble.com/Performance-issue-during-stress-tp3736771p3736771.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.