David - can you upgrade 5.3 ?

On 15 Jan 2010, at 10:40, David Delbecq wrote:

Le 15/01/10 11:25, Gary Tully a écrit :
A thread dump of the broker jvm, when the clients are stalled, would help
diagnose what is going on. btw, what activemq version are you using?

BrokerService                  - ActiveMQ 5.2.0 JMS Message Broker
(localhost) is starting

I'll come back with broker dump when there is a problem again. This can
be in several hours or within a few weeks. However i'll try to force a
stalling next week...


2010/1/15 David Delbecq <de...@oma.be>


Le 15/01/10 10:24, Dejan Bosanac a écrit :

Hi David,

you're probably blocked by "producer flow control". Take a look here for more info: http://activemq.apache.org/producer-flow- control.html

Cheers

I already took a look at it, read it three time to be sure i understand. It's quite technical but beyond that, i don't think this apply for me.
My queues are all empty!!! (they stalled when there were 50 messages
pending but where finally emptied), connections are not shared by
several queues and am not sure how to implement the cursor part of
documentation. There is no "slow consumer" that could influence it at that right moment (customers are running an waiting for new messages as you can see in capture). Moreover my messages are of about 1k payload (about 10 small text entries in a MapMessage), and my activeMQ config is
like this
                  <policyEntry queue=">" memoryLimit="500mb"/>
                  <policyEntry topic=">" memoryLimit="500mb">
....
      <systemUsage>
          <systemUsage>
              <memoryUsage>
                  <memoryUsage limit="20 mb"/>
              </memoryUsage>
              <storeUsage>
                  <storeUsage limit="1 gb" name="foo"/>
              </storeUsage>
              <tempUsage>
                  <tempUsage limit="100 mb"/>
              </tempUsage>
          </systemUsage>
      </systemUsage>


There is no way a bunch of 10 pending messages could fill a 1gb store,
isn't it? What config part of activemq do i need to change to ensure
that it can store at least about 10000 persistent messages (that makes only 10Mb of datas!!) before failing? Currently it fails and is never
recovering without a restart of broker when there are only 50 small
pending messages in the queue. As a workaround i have set
"sendFailIfNoSpace" to true, so my client will fail instead of stalling,
i'll see when this happen more quickly like that....


Here is broker part of my config file, can someone help me fix this?
Thank you:


  <broker xmlns="http://activemq.apache.org/schema/core";
brokerName="localhost" dataDirectory="${activemq.base}/data"
persistent="true">
      <plugins>
      <simpleAuthenticationPlugin>
        <users>
              <authenticationUser username="admin" password="******"
                      groups="users,admins"/>
<authenticationUser username="sharkTool" password="********"
                      groups="serverTools"/>
              <authenticationUser username="adminConsole"
password="*********"
                      groups="serverTools"/>
        </users>
      </simpleAuthenticationPlugin>
    <authorizationPlugin>
      <map>
        <authorizationMap>
          <authorizationEntries>
<authorizationEntry queue=">" read="admins" write="admins"
admin="admins" />
<authorizationEntry queue="WF.>" read="users,serverTools"
write="serverTools" admin="admins,serverTools" />

<authorizationEntry topic=">" read="admins" write="admins"
admin="admins" />
<authorizationEntry topic="WF.>" read="users,serverTools"
write="serverTools" admin="admins,serverTools" />

            <authorizationEntry topic="ActiveMQ.Advisory.>"
read="guests,users,serverTools" write="guests,users,serverTools"
admin="guests,users,serverTools"/>
          </authorizationEntries>

          <!-- let's assign roles to temporary destinations. comment
this entry if we don't want any roles assigned to temp destinations
          <tempDestinationAuthorizationEntry>
            <tempDestinationAuthorizationEntry
read="tempDestinationAdmins" write="tempDestinationAdmins"
admin="tempDestinationAdmins"/>
         </tempDestinationAuthorizationEntry>          -->
        </authorizationMap>
      </map>
    </authorizationPlugin>


      </plugins>
      <!-- Destination specific policies using destination names or
wildcards -->
      <destinationPolicy>
          <policyMap>
              <policyEntries>
                  <policyEntry queue=">" memoryLimit="500mb"/>
                  <policyEntry topic=">" memoryLimit="500mb">
<!-- you can add other policies too such as these
                      <dispatchPolicy>
                          <strictOrderDispatchPolicy/>
                      </dispatchPolicy>
                      <subscriptionRecoveryPolicy>
                          <lastImageSubscriptionRecoveryPolicy/>
                      </subscriptionRecoveryPolicy>
                    -->
                  </policyEntry>
              </policyEntries>
          </policyMap>
      </destinationPolicy>

      <!-- Use the following to configure how ActiveMQ is exposed in
JMX -->
      <managementContext>
          <managementContext createConnector="false"/>
      </managementContext>

<!-- The store and forward broker networks ActiveMQ will listen
to -->
      <networkConnectors>
          <!-- by default just auto discover the other brokers -->
          <!-- <networkConnector name="default-nc"
uri="multicast://default"/>-->
          <!-- Example of a static configuration:
          <networkConnector name="host1 and host2"
uri="static://(tcp://host1:61616,tcp://host2:61616)"/>
          -->
      </networkConnectors>

      <persistenceAdapter>
          <amqPersistenceAdapter syncOnWrite="false"
directory="${activemq.base}/data" maxFileLength="20 mb"/>
      </persistenceAdapter>



      <sslContext>
<sslContext keyStore="file:${activemq.base}/conf/ broker.ks"
keyStorePassword="password"
trustStore="file:${activemq.base}/conf/broker.ts"
trustStorePassword="password"/>
      </sslContext>

      <!--  The maximum about of space the broker will use before
slowing down producers -->
      <systemUsage>
          <systemUsage>
              <memoryUsage>
                  <memoryUsage limit="20 mb"/>
              </memoryUsage>
              <storeUsage>
                  <storeUsage limit="1 gb" name="foo"/>
              </storeUsage>
              <tempUsage>
                  <tempUsage limit="100 mb"/>
              </tempUsage>
          </systemUsage>
      </systemUsage>


      <!-- The transport connectors ActiveMQ will listen to -->
      <transportConnectors>
          <transportConnector name="openwire"
uri="tcp://localhost:61616"/>
          <!-- <transportConnector name="ssl"
uri="ssl://localhost:61617"/>
<transportConnector name="stomp" uri="stomp://localhost: 61613"/>
          <transportConnector name="xmpp"
uri="xmpp://localhost:61222"/> -->
      </transportConnectors>
      <destinations>
          <queue physicalName="WF.Regraph" />
            <queue physicalName="WF.Notify"/>
            <topic physicalName="WF.Events"/>
      </destinations>
          <destinationInterceptors>
    <virtualDestinationInterceptor>
      <virtualDestinations>
        <compositeQueue name="WF.IncomingEvents">
          <forwardTo>
            <queue physicalName="WF.Regraph"/>
            <queue physicalName="WF.Notify"/>
            <topic physicalName="WF.Events" />
          </forwardTo>
        </compositeQueue>
      </virtualDestinations>
    </virtualDestinationInterceptor>
  </destinationInterceptors>


  </broker>



--


On Fri, Jan 15, 2010 at 10:24 AM, David Delbecq <de...@oma.be
<mailto:de...@oma.be>> wrote:

   Hello,

   can someone explain me why my activeMQ client is stalled in such
   situation (i have 10 threads blocked like this having as
   consequence a complete blocking of my client application):

   "http-8081-Processor6" daemon prio=10 tid=00841c38 nid=512
   lwp_id=2426611 waiting on condition [236f3000..236f153c]
      java.lang.Thread.State: WAITING (parking)
           at sun.misc.Unsafe.park(Native Method)
           - parking to wait for  <40ae1828> (a


java.util.concurrent.locks.AbstractQueuedSynchronizer $ConditionObject)

           at
java.util.concurrent.locks.LockSupport.park(LockSupport.java: 158)
           at


java.util.concurrent.locks.AbstractQueuedSynchronizer $ConditionObject.await(AbstractQueuedSynchronizer.java:1889)

           at


java .util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java: 317)

           at


org .apache .activemq.transport.FutureResponse.getResult(FutureResponse.java:40)

           at


org .apache .activemq .transport.ResponseCorrelator.request(ResponseCorrelator.java:80)

           at


org .apache .activemq .ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1233)

           at
org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java: 1659)
           - locked <40ae01e8> (a java.lang.Object)
           at


org .apache .activemq .ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:227)

           at


org .apache .activemq .ActiveMQMessageProducerSupport .send(ActiveMQMessageProducerSupport.java:241)

           at
   be.rmi.shark.JMSEventManager.sendEvent(JMSEventManager.java:146)


   considering that the activeMQ lists size, as referenced by
   activeMQ admin interface are as follow:
   Name      Number Of Pending Messages      Number Of Consumers
Messages Sent Messages Received Views Operations WF.Regraph 0 1 1714 1720 Browse Send To

Purge Delete

WF.Notify 0 1 1696 1742 Browse Send To

Purge Delete

   WF.IncomingEvents         0       0       0       0       Browse

Send To Purge Delete

   Is this to be considered normal that i must restart activeMQ
producers on a regular basis because of those this stalling? Where can i find clear documentation on proper configuration of activeMQ
   to prevent this stalling? Thank you.

   --
   David Delbecq
   ICT
   Institut Royal Météorologique
   Ext:557




--
David Delbecq
ICT
Institut Royal Météorologique
Ext:557








--
David Delbecq
ICT
Institut Royal Météorologique
Ext:557


Rob Davies
http://twitter.com/rajdavies
I work here: http://fusesource.com
My Blog: http://rajdavies.blogspot.com/
I'm writing this: http://www.manning.com/snyder/





Reply via email to