[ 
https://issues.apache.org/jira/browse/ARTEMIS-5100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17890207#comment-17890207
 ] 

Justin Bertram edited comment on ARTEMIS-5100 at 10/16/24 6:11 PM:
-------------------------------------------------------------------

The reason this process doesn't read from {{broker.xml}} is because there is no 
{{broker.xml}} to read from because the {{create}} command in use here is 
actually _creating_ it.

In order to work-around this problem you do _one_ of the following:
* Pass {{--no-autotune}} and tune it later as necessary
* Pass {{--nio}} to eliminate AIO from the configuration
* Increase 
[{{/proc/sys/fs/aio-max-nr}}|https://www.kernel.org/doc/html/latest/admin-guide/sysctl/fs.html#id1]
 in the environment
* Wait and try again later since whatever is using AIO at the moment may slow 
down or stop altogether

I will added a new parameter for the {{create}} command so that 
{{journal-max-io}} can be configured explicitly so these work-arounds aren't 
necessary in the future.


was (Author: jbertram):
The reason this process doesn't read from {{broker.xml}} is because there is no 
{{broker.xml}} to read from because the {{create}} command in use here is 
actually _creating_ it.

In order to get around this problem you do a few things:
* Pass {{--no-autotune}} and tune it later as necessary
* Increase 
[{{/proc/sys/fs/aio-max-nr}}|https://www.kernel.org/doc/html/latest/admin-guide/sysctl/fs.html#id1]
 in the environment
* Wait and try again later since whatever is using AIO at the moment may slow 
down or stop altogether

I will added a new parameter for the {{create}} command so that 
{{journal-max-io}} can be configured explicitly so these work-arounds aren't 
necessary in the future.

> Add support for journal-max-io to create CLI command
> ----------------------------------------------------
>
>                 Key: ARTEMIS-5100
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-5100
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: Configuration
>    Affects Versions: 2.33.0, 2.35.0
>            Reporter: Valeriy Ak
>            Assignee: Justin Bertram
>            Priority: Minor
>              Labels: asyncio, cloud, journal
>
> 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 tries to determine the parameters for {{SyncCalculation.syncTest}} by 
> itself.
>  
> It retrieves 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.
> {code:java}
>  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{code}
>  
> I think it happened because the max-io value in the guest OS might be lower 
> than the default value in Artemis.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to