Uploaded image for project: 'ActiveMQ Artemis'
  1. ActiveMQ Artemis
  2. ARTEMIS-2164

ActiveMQ fails on start with OutOfMemoryError

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Not A Bug
    • 2.6.0, 2.6.3
    • None
    • Broker
    • None
    • MS Windows Server 2016

    Description

      When starting ActiveMQ we get an out of memory error: 

      
      Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
       at org.apache.activemq.artemis.utils.collections.TypedProperties$StringValue.readStringValue(TypedProperties.java:899)
       at org.apache.activemq.artemis.utils.collections.TypedProperties.decode(TypedProperties.java:407)
       at org.apache.activemq.artemis.core.message.impl.CoreMessage.checkProperties(CoreMessage.java:550)
       at org.apache.activemq.artemis.core.message.impl.CoreMessage.getScheduledDeliveryTime(CoreMessage.java:319)
       at org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.reroute(PostOfficeImpl.java:944)
       at org.apache.activemq.artemis.core.server.impl.PostOfficeJournalLoader.handleAddMessage(PostOfficeJournalLoader.java:227)
       at org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.loadMessageJournal(AbstractJournalStorageManager.java:1167)
       at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.loadJournals(ActiveMQServerImpl.java:2618)
       at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.initialisePart2(ActiveMQServerImpl.java:2376)
       at org.apache.activemq.artemis.core.server.impl.LiveOnlyActivation.run(LiveOnlyActivation.java:72)
       at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:535)
       at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:474)
       at org.apache.activemq.artemis.integration.FileBroker.start(FileBroker.java:111)
       at org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:82)
       at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:149)
       at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:97)
       at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:124)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:129)
      
      

       

      There is one queue: requestQ which has more then 400,000 entries. 
      As you can see in the attached broker.xml the paging is activated for all addresses. 

      Attached you can also find the complete data folder including all messages. it is failing on version 2.6.0, also an update to 2.6.3 which is the current version did not help.

       

      ActiveMQ was started as windows service with the following parameter:

      
      C:\Program Files\Java\jdk1.8.0_181\bin\java.exe 
      -Xbootclasspath/a:F:\XXX\app\artemis\lib\jboss-logmanager-2.0.3.Final.jar 
      -XX:+UseParallelGC -XX:+AggressiveOpts -Xms512M -Xmx1024M 
      -classpath F:\XXX\app\artemis\lib\artemis-boot.jar 
      -Dartemis.home=F:\XXX\app\artemis 
      -Dartemis.instance=F:\XXX\app\artemis-broker 
      -Ddata.dir=F:\XXX\app\artemis-broker\data 
      -Dartemis.instance.etc="F:\XXX\app\artemis-broker\etc" 
      -Djava.util.logging.manager=org.jboss.logmanager.LogManager 
      -Dlogging.configuration=file:/F:/XXX/app/artemis-broker/etc//logging.properties 
      -Djava.security.auth.login.config=F:\XXX\app\artemis-broker\etc\login.config 
      -Dhawtio.realm=activemq 
      -Dhawtio.offline="true" 
      -Dhawtio.role=amq 
      -Dhawtio.rolePrincipalClasses=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal 
      -Djolokia.policyLocation=file:/F:/XXX/app/artemis-broker/etc//jolokia-access.xml org.apache.activemq.artemis.boot.Artemis run
      
      

       

      We analyzed a heapdump and saw that all the messages got loaded into memory regardless that we have activated paging. 

       

      Expectation: Using the pagination option, ActiveMQ should not run out of memory. 

       

       

       

       

      Attachments

        1. artemis-data.zip
          26.22 MB
          Benjamin Holzamer
        2. broker.xml
          11 kB
          Benjamin Holzamer

        Activity

          People

            Unassigned Unassigned
            benjamin42 Benjamin Holzamer
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: