Details
-
Improvement
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
2.33.0, 2.35.0
-
None
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.