Uploaded image for project: 'AMQ Broker'
  1. AMQ Broker
  2. ENTMQBR-2599

AMQ 7.2.4: java.lang.OutOfMemoryError: Direct buffer memory

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • None
    • AMQ 7.2.4.GA
    • None
    • -
    • Workaround Exists
    • Hide

      Add -Djdk.nio.maxCachedBufferSize=100000 (or less) to the broker JVM startup parameters while using large messages with OpenWire/AMQP to prevent NIO from caching large (> 100 KB) direct ByteBuffers.

      Show
      Add -Djdk.nio.maxCachedBufferSize=100000 (or less) to the broker JVM startup parameters while using large messages with OpenWire/AMQP to prevent NIO from caching large (> 100 KB) direct ByteBuffers.

    Description

      AMQ 7.4.2,

      • Client is a camel AMQ route, moving messages from one queue to another.
      • Customer has been observing system memory to be much higher than heap allocated for AMQ7 process(which we observe from top output).
      • Tried to increase direct buffer using -XX:MaxDirectMemorySize=512M to the broker but seems it is not working. I still getting this error on the broker:
      2019-06-17 10:33:46,242 WARN  [org.apache.activemq.artemis.core.server] Error during message dispatch: java.lang.OutOfMemoryError: Direct buffer memory
      	at java.nio.Bits.reserveMemory(Bits.java:694) [rt.jar:1.8.0_172]
      	at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123) [rt.jar:1.8.0_172]
      	at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311) [rt.jar:1.8.0_172]
      	at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:241) [rt.jar:1.8.0_172]
      	at sun.nio.ch.IOUtil.read(IOUtil.java:195) [rt.jar:1.8.0_172]
      	at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:159) [rt.jar:1.8.0_172]
      	at org.apache.activemq.artemis.core.io.nio.NIOSequentialFile.read(NIOSequentialFile.java:165) [artemis-journal-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.io.nio.NIOSequentialFile.read(NIOSequentialFile.java:155) [artemis-journal-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl$DecodingContext.encode(LargeServerMessageImpl.java:538) [artemis-server-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.message.impl.CoreMessage.getLargeMessageBuffer(CoreMessage.java:262) [artemis-core-client-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.message.impl.CoreMessage.getDataBuffer(CoreMessage.java:239) [artemis-core-client-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter.toAMQMessage(OpenWireMessageConverter.java:525) [artemis-openwire-protocol-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter.createMessageDispatch(OpenWireMessageConverter.java:492) [artemis-openwire-protocol-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.protocol.openwire.amq.AMQConsumer.handleDeliver(AMQConsumer.java:259) [artemis-openwire-protocol-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.sendMessage(AMQSession.java:313) [artemis-openwire-protocol-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.deliverStandardMessage(ServerConsumerImpl.java:1107) [artemis-server-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.proceedDeliver(ServerConsumerImpl.java:465) [artemis-server-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.server.impl.QueueImpl.proceedDeliver(QueueImpl.java:2942) [artemis-server-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.server.impl.QueueImpl.deliver(QueueImpl.java:2410) [artemis-server-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.server.impl.QueueImpl.access$2000(QueueImpl.java:107) [artemis-server-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.core.server.impl.QueueImpl$DeliverRunner.run(QueueImpl.java:3216) [artemis-server-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) [artemis-commons-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) [artemis-commons-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66) [artemis-commons-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_172]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_172]
      	at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [artemis-commons-2.6.3.redhat-00020.jar:2.6.3.redhat-00020]
      

      Attachments

        1. broker_nativememory_21Jun.log
          2 kB
        2. broker_nativememory_24Jun.log
          2 kB
        3. bufferpool_1.png
          bufferpool_1.png
          73 kB
        4. top_21June.txt
          15 kB
        5. top_24June.txt
          15 kB

        Activity

          People

            jbyrne@redhat.com John Byrne
            rhn-support-cpandey Chandra Shekhar Pandey (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: