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

Add support for journal-max-io to create CLI command

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 2.33.0, 2.35.0
    • None
    • Configuration

    Description

      When the broker starts in the cloud it runs the docker-run.sh script. This script performs auto-tuning for the journal (to achieve the best performance). However, the auto-tuning does not read broker.xml as I expected. Instead, it uses the default value for maxio from ActiveMQDefaultConfiguration.getDefaultJournalMaxIoAio() which cannot be changed through configuration parameters or any other way (the value is 4096).
       
      Thus, when newContext is called and it invokes the native io_queue_init, we encounter an error, and the execution stops.

      Auto tuning journal ...java.lang.RuntimeException: Cannot initialize queue:Resource temporarily unavailable        
      at org.apache.activemq.artemis.nativo.jlibaio.LibaioContext.newContext(Native Method)        
      at org.apache.activemq.artemis.nativo.jlibaio.LibaioContext.<init>(LibaioContext.java:180)        
      at org.apache.activemq.artemis.core.io.aio.AIOSequentialFileFactory.start(AIOSequentialFileFactory.java:290)        
      at org.apache.activemq.artemis.cli.commands.util.SyncCalculation.newFactory(SyncCalculation.java:246)        
      at org.apache.activemq.artemis.cli.commands.util.SyncCalculation.syncTest(SyncCalculation.java:80)        
      at org.apache.activemq.artemis.cli.commands.Create.performAutoTune(Create.java:1045)        
      at org.apache.activemq.artemis.cli.commands.Create.run(Create.java:824)        
      at org.apache.activemq.artemis.cli.commands.Create.execute(Create.java:520)        
      at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:221)        
      at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:167)        
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)        
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)        
      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)        
      at java.base/java.lang.reflect.Method.invoke(Method.java:568)        
      at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:157)        
      at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:64)
      Couldn't perform sync calculation, using default values

      I think it happened because the max-io value in the guest OS might be lower than the default value in Artemis.

      Attachments

        Activity

          People

            jbertram Justin Bertram
            akvel Valeriy Ak
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: