Since ReadyNow learns from previous executions and improves warm-up and start-up time incrementally at every new invocation, you need to train ReadyNow to improve your application performance.
ReadyNow gathers data from training runs and stores it in a profile log which ensures better performance after the first and subsequent runs.
Depending on your goals and constraints, different approaches to train ReadyNow profile can apply.
To produce a profile that minimizes or eliminates learning in production, follow this approach.
Train the profile across two separate runs in the pre-production environment with the following command-line options:
That is, perform a run of the application until it reaches optimal performance, restart the JVM using the profile just generated, and again run the application until it reaches optimal performance.
Note, to reach an optimal profile, a minimum of 10,000 executions of all important application methods are needed in each run.
If time for training ReadyNow is limited, perform one run of your application in the pre-production environment with the following command-line options:
This captures a very good profile. Such a profile may feature a possible odd outlier on the first day of production run but will improve with subsequent runs.
If you cannot create a profile in a pre-production environment, allow it to learn in production with the following command-line options:
This results in the poor warm-up first day in production but better performance on subsequent days.
To validate the sufficiency of ReadyNow training, check for outliers. The absence of outliers denotes the training went well. Reduced start-up latency also proves there is enough training data gathered in a profile log. Otherwise, a few more runs are needed to enhance the profile content and get a fully optimized profile log.