activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin C." <mart...@gmx.at>
Subject Re: ActiveMQ needs tempUsage for recovery of persistent messages on startup?
Date Mon, 27 Aug 2012 09:59:02 GMT
Hi Gary,

sorry for getting back to this rather old issue, but I just got an issue in
the field (twice) with the configuration below. The broker stopped
accepting messages after it reached the 64MB memory limit, instead of
spooling them out to disk. It basically is the previously discussed
configuration with the <pendingQueuePolicy /> section removed.

After increasing the MemoryLimit of the broker via JMX, the messages got
processed again. The temp-store usage was at 0, the persistent store usage
at 11%. So, from my understanding, the broker should not have stopped
accepting messages. Any hints? Or should I fall back to using
<fileQueueCursor /> again?

I am still on 5.5.0 and cannot upgrade that easily.

Thanks in advance!

Best regards,
Martin

The relevant parts of the configuration again.

<broker xmlns="http://activemq.apache.org/schema/core"
brokerName="localhost" dataDirectory="${activemq.base}/data"
    populateJMSXUserID="true" useJmx="true">

    <destinationPolicy>
      <policyMap>
        <policyEntries>
          <policyEntry topic=">" producerFlowControl="false"
gcInactiveDestinations="false" inactiveTimoutBeforeGC="60000">
              <vmCursor />
          </policyEntry>
          <policyEntry queue=">" producerFlowControl="false"
gcInactiveDestinations="false" inactiveTimoutBeforeGC="86400000">
            <deadLetterStrategy>
              <individualDeadLetterStrategy queuePrefix="DLQ."
useQueueForQueueMessages="true"
                processExpired="true" processNonPersistent="false" />
            </deadLetterStrategy>
          </policyEntry>
        </policyEntries>
      </policyMap>
    </destinationPolicy>

    <persistenceAdapter>
    <kahaDB directory="${activemq.base}/data/kahadb"
         checkForCorruptJournalFiles="true" checksumJournalFiles="true"
         concurrentStoreAndDispatchTopics="false"
         concurrentStoreAndDispatchQueues="false"
         />
    </persistenceAdapter>

    <systemUsage>
      <systemUsage sendFailIfNoSpace="true">
        <memoryUsage>
          <memoryUsage limit="64 mb" />
        </memoryUsage>
        <storeUsage>
          <storeUsage limit="10 gb" />
        </storeUsage>
        <tempUsage>
          <tempUsage limit="1 gb" />
        </tempUsage>
      </systemUsage>
    </systemUsage>
  </broker>

On Wed, Nov 16, 2011 at 1:50 PM, Gary Tully <gary.tully@gmail.com> wrote:

> yes.
>
> On 16 November 2011 12:01, Martin C. <martinc@gmx.at> wrote:
> > Hi Gary,
> >
> > thanks for the very fast response. I will change the configuration
> > accordingly. So basically you say I should remove the
> > <pendingQueuePolicy> as a whole?
> >
> > Best regards,
> > Martin
> >
> > On Wed, Nov 16, 2011 at 11:34 AM, Gary Tully <gary.tully@gmail.com>
> wrote:
> >> You should not be using the file pending message cursor in this case.
> >> The default store cursor is best, it will use a file cursor for non
> >> persistent messages and leave excess (exceed the cache) persistent
> >> messages in the store.
> >> When it is specified as the default cursor in configuration, it is
> >> used for both persistent and non persistent messages.
> >>
> >> The file pending message cursor replays all messages on startup such
> >> that it can do an append to the cursor on the next add but it is only
> >> intended for really slow stores, where reading from the local file
> >> system is faster than reading from the store. This is not the case
> >> with kahaDB.
> >>
> >> On 16 November 2011 10:26, Martin C. <martinc@gmx.at> wrote:
> >>> Hi,
> >>>
> >>> I a have a question regarding fileQueueCursor and systemUsage on
> >>> ActiveMQ 5.5.0: Below you see my configuration, which limits the
> >>> memory to 64MB, store usage to 10GB and tempUsage to 1GB.
> >>>
> >>> I have a KahaDB with about 300000 messages, using 330MB in the kahadb
> >>> directory, all messages are persistent. If I start ActiveMQ, I see the
> >>> tmp_storage directory grow to 1GB, where it finally blocks and
> >>> recovery of the messages starts hanging:
> >>>
> >>> [...]
> >>> DEBUG | default:memory: usage change from: 2% of available memory, to:
> >>> 1% of available memory
> >>> DEBUG | default:memory:queue://local.queue.myqueue:memory: usage
> >>> change from: 1% of available memory, to: 0% of available memory
> >>> DEBUG | default:memory: usage change from: 1% of available memory, to:
> >>> 0% of available memory
> >>>  INFO | cursor for queue://local.queue.myqueue has recovered 50000
> >>> messages. 15% complete
> >>>  INFO | cursor for queue://local.queue.myqueue has recovered 100000
> >>> messages. 31% complete
> >>>  INFO | cursor for queue://local.queue.myqueue has recovered 150000
> >>> messages. 47% complete
> >>>  INFO | cursor for queue://local.queue.myqueue has recovered 200000
> >>> messages. 62% complete
> >>>
> >>> The memory usage goes up to around 75%, where it starts dropping down
> >>> to the 0% from the logfile above. This is where it keeps hanging, with
> >>> the tmp_storage directory at 1GB diskspace.
> >>>
> >>> If I increase the tempUsage to 10GB, the startup works fine
> >>> (tmp_storage becomes about 1.4GB in this case). Can you explain to me,
> >>> why I need to increase tempUsage in order to restart my broker with a
> >>> lot of persistent messages left? As far as I understood the tempUsage
> >>> is for storing non-persistent messages, persistent messages should be
> >>> affected by storeUsage?
> >>>
> >>> Thanks in advance!
> >>>
> >>> Best regards,
> >>> Martin
> >>>
> >>> PS: the relevant parts from my configuration
> >>>
> >>>  <broker xmlns="http://activemq.apache.org/schema/core"
> >>> brokerName="localhost" dataDirectory="${activemq.base}/data"
> >>>    populateJMSXUserID="true" useJmx="true">
> >>>
> >>>    <destinationPolicy>
> >>>      <policyMap>
> >>>        <policyEntries>
> >>>          <policyEntry topic=">" producerFlowControl="false"
> >>> gcInactiveDestinations="false" inactiveTimoutBeforeGC="60000">
> >>>              <vmCursor />
> >>>          </policyEntry>
> >>>          <policyEntry queue=">" producerFlowControl="false"
> >>> gcInactiveDestinations="false" inactiveTimoutBeforeGC="86400000">
> >>>            <deadLetterStrategy>
> >>>              <individualDeadLetterStrategy queuePrefix="DLQ."
> >>> useQueueForQueueMessages="true"
> >>>                processExpired="true" processNonPersistent="false" />
> >>>            </deadLetterStrategy>
> >>>            <pendingQueuePolicy>
> >>>              <fileQueueCursor />
> >>>            </pendingQueuePolicy>
> >>>          </policyEntry>
> >>>        </policyEntries>
> >>>      </policyMap>
> >>>    </destinationPolicy>
> >>>
> >>>    <persistenceAdapter>
> >>>    <kahaDB directory="${activemq.base}/data/kahadb"
> >>>         checkForCorruptJournalFiles="true" checksumJournalFiles="true"
> >>>         concurrentStoreAndDispatchTopics="false"
> >>>         concurrentStoreAndDispatchQueues="false"
> >>>         />
> >>>    </persistenceAdapter>
> >>>
> >>>    <systemUsage>
> >>>      <systemUsage sendFailIfNoSpace="true">
> >>>        <memoryUsage>
> >>>          <memoryUsage limit="64 mb" />
> >>>        </memoryUsage>
> >>>        <storeUsage>
> >>>          <storeUsage limit="10 gb" />
> >>>        </storeUsage>
> >>>        <tempUsage>
> >>>          <tempUsage limit="1 gb" />
> >>>        </tempUsage>
> >>>      </systemUsage>
> >>>    </systemUsage>
> >>>  </broker>
> >>>
> >>
> >>
> >>
> >> --
> >> http://fusesource.com
> >> http://blog.garytully.com
> >>
> >
>
>
>
> --
> http://fusesource.com
> http://blog.garytully.com
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message