Hi everyone,

I'm new in using ActiveMQ and according to business requirement I have a 
Camel Route optimized to read large size file (~40000) to split and store
each single row in AMQueue and then a pool consumer will process invoking a
RS.

ActiveMQ after about 500 messages go down in OutOfMemory - Heap Space. 

I use JBossFuse ESB 6.2 based on ActiveMQ 5.11  and according to
http://activemq.apache.org/javalangoutofmemory.html I modified activemq.xml
in installationJBFuseDir/etc but the problem continue:

 <policyEntry queue=">" producerFlowControl="false" 
optimizedDispatch="true" queuePrefetch="0">
                        <pendingMessageLimitStrategy>
                        <constantPendingMessageLimitStrategy limit="1000"/>
                        </pendingMessageLimitStrategy>
                                        <deadLetterStrategy>
                                                <individualDeadLetterStrategy 
queuePrefix="Test.DLQ."/>
                                        </deadLetterStrategy>
                                        <pendingQueuePolicy>
                                                <storeCursor />
                                        </pendingQueuePolicy>                   
                
                </policyEntry>

<persistenceAdapter>
         
        <levelDB directory="${data}/leveldb"  />
</persistenceAdapter>

And I added jvm properties 
-Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=false

Errors:

PooledConnectionFactory - Expiring connection ActiveMQConnection
{id=ID:FGBAL201530-50934-1458820732064-7:3,clientId=ID:FGBAL201530-50934-1458820732064-6:2,started=false}
on IOException: Unexpected error occurred: java.lang.OutOfMemoryError: Java
heap space

or

Ignoring no space left exception, java.io.IOException: Java heap space
java.io.IOException: Java heap space
        at
org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:39)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.leveldb.LevelDBClient.might_fail(LevelDBClient.scala:552)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.leveldb.LevelDBClient.might_fail_using_index(LevelDBClient.scala:1044)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.leveldb.LevelDBClient.collectionCursor(LevelDBClient.scala:1357)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.leveldb.LevelDBClient.queueCursor(LevelDBClient.scala:1271)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.leveldb.DBManager.cursorMessages(DBManager.scala:735)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.leveldb.LevelDBStore$LevelDBMessageStore.recoverNextMessages(LevelDBStore.scala:860)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.broker.region.cursors.QueueStorePrefetch.doFillBatch(QueueStorePrefetch.java:109)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:381)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:142)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:159)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.broker.region.Queue.doPageInForDispatch(Queue.java:1896)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:2107)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.broker.region.Queue.iterate(Queue.java:1583)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)[184:org.apache.activemq.activemq-osgi:5.11.0.redhat-620133]
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_79]
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_79]
        at java.lang.Thread.run(Thread.java:745)[:1.7.0_79]
Caused by: java.lang.OutOfMemoryError: Java heap space
        at org.fusesource.hawtbuf.Buffer.<init>(Buffer.java:42)
        at
org.apache.activemq.leveldb.RecordLog$LogReader.read(RecordLog.scala:380)
        at
org.apache.activemq.leveldb.RecordLog$$anonfun$read$2.apply(RecordLog.scala:654)
        at
org.apache.activemq.leveldb.RecordLog$$anonfun$read$2.apply(RecordLog.scala:654)
        at org.apache.activemq.leveldb.RecordLog.get_reader(RecordLog.scala:644)
        at org.apache.activemq.leveldb.RecordLog.read(RecordLog.scala:654)
        at
org.apache.activemq.leveldb.LevelDBClient.getMessage(LevelDBClient.scala:1335)
        at
org.apache.activemq.leveldb.LevelDBClient$$anonfun$queueCursor$1.apply(LevelDBClient.scala:1274)
        at
org.apache.activemq.leveldb.LevelDBClient$$anonfun$queueCursor$1.apply(LevelDBClient.scala:1271)
        at
org.apache.activemq.leveldb.LevelDBClient$$anonfun$collectionCursor$1$$anonfun$apply$mcV$sp$12.apply(LevelDBClient.scala:1359)
        at
org.apache.activemq.leveldb.LevelDBClient$$anonfun$collectionCursor$1$$anonfun$apply$mcV$sp$12.apply(LevelDBClient.scala:1358)
        at
org.apache.activemq.leveldb.LevelDBClient$RichDB.check$4(LevelDBClient.scala:323)
        at
org.apache.activemq.leveldb.LevelDBClient$RichDB.cursorRange(LevelDBClient.scala:325)
        at
org.apache.activemq.leveldb.LevelDBClient$$anonfun$collectionCursor$1.apply$mcV$sp(LevelDBClient.scala:1358)
        at
org.apache.activemq.leveldb.LevelDBClient$$anonfun$collectionCursor$1.apply(LevelDBClient.scala:1358)
        at
org.apache.activemq.leveldb.LevelDBClient$$anonfun$collectionCursor$1.apply(LevelDBClient.scala:1358)
        at
org.apache.activemq.leveldb.LevelDBClient.usingIndex(LevelDBClient.scala:1038)
        at
org.apache.activemq.leveldb.LevelDBClient$$anonfun$might_fail_using_index$1.apply(LevelDBClient.scala:1044)
        at
org.apache.activemq.leveldb.LevelDBClient.might_fail(LevelDBClient.scala:549)
        at
org.apache.activemq.leveldb.LevelDBClient.might_fail_using_index(LevelDBClient.scala:1044)
        at
org.apache.activemq.leveldb.LevelDBClient.collectionCursor(LevelDBClient.scala:1357)
        at
org.apache.activemq.leveldb.LevelDBClient.queueCursor(LevelDBClient.scala:1271)
        at
org.apache.activemq.leveldb.DBManager.cursorMessages(DBManager.scala:735)
        at
org.apache.activemq.leveldb.LevelDBStore$LevelDBMessageStore.recoverNextMessages(LevelDBStore.scala:860)
        at
org.apache.activemq.broker.region.cursors.QueueStorePrefetch.doFillBatch(QueueStorePrefetch.java:109)
        at
org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:381)
        at
org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:142)
        at
org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:159)
        at
org.apache.activemq.broker.region.Queue.doPageInForDispatch(Queue.java:1896)
        at 
org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:2107)
        at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1583)
        at
org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)

How to configure Broker to handle the load?

Thanks in advance

Best Regards

Michele





--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Active-MQ-OutOfMemory-in-JbossFuse-6-2-context-tp4709960.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to