Quick Guides
  • Free Trial options
  • Quick Guides: Akamas in a sandbox
    • [AIAS-01] Guide: Explore an Optimization Study for a Kubernetes microservices application
      • [AIAS-01] Architecture overview
      • [AIAS-01] Explore the Study
      • [AIAS-01] Explore the System
      • [AIAS-01] Explore the Workflow
      • [AIAS-01] Explore the analysis
      • [AIAS-01] Explore the results
    • [AIAS-02] Guide: Create a study to optimize Java performance using the Akamas UI
      • [AIAS-02] Architecture overview
      • [AIAS-02] Create the Study
      • [AIAS-02] Define the optimization goal
      • [AIAS-02] Define the optimization parameters
      • [AIAS-02] Define the performance metrics
      • [AIAS-02] Define the optimization steps
      • [AIAS-02] Explore the results
    • [AIAS-03] Guide: Create a study to optimize K8s microservices costs using the Akamas CLI
      • [AIAS-03] Architecture overview
      • [AIAS-03] Create the system
      • [AIAS-03] Create the Workflow
      • [AIAS-03] Create the Study
      • [AIAS-03] Explore the results
  • Quick Guides: Akamas in a box
    • [AIAB-00] Install Akamas-in-a-box
      • [AIAB-00] Setup your Linux box
      • [AIAB-00] Install Akamas
    • [AIAB-01] Optimize a Java-based application (Renaissance benchmark)
      • [AIAB-01] Architecture overview
      • [AIAB-01] Create the System and its associated components
      • [AIAB-01] Configure the Telemetry
      • [AIAB-01] Create the workflow
      • [AIAB-01] Create and run the study
      • [AIAB-01] Explore the results
    • [AIAB-02] Optimize a Java-based application (Konakart) with JMeter
      • [AIAB-02] Architecture overview
      • [AIAB-02] Create the system and its components
      • [AIAB-02] Automate performance tests
      • [AIAB-02] Create the Telemetry Provider
      • [AIAB-02] Create the workflow
      • [AIAB-02] Create the study
      • [AIAB-02] Explore the results
    • [AIAB-03] Optimize a Java-based application (Konakart) with LRE
      • [AIAB-03] Architecture overview
      • [AIAB-03] Setup LoadRunner Enterprise
      • [AIAB-03] Create the system and its components
      • [AIAB-03] Create the telemetry instances
      • [AIAB-03] Create the workflow
      • [AIAB-03] Create the optimization study
    • [AIAB-04] Optimize a Java-based Kubernetes application (Online Boutique)
      • [AIAB-04] Architecture overview and setup
      • [AIAB-04] Setup Online Boutique
      • [AIAB-04] Setup Akamas
      • [AIAB-04] Create the system and its components
      • [AIAB-04] Create the workflow
      • [AIAB-04] Create the Study
      • [AIAB-04] Explore the results
Powered by GitBook
On this page

Was this helpful?

Export as PDF
  1. Quick Guides: Akamas in a box
  2. [AIAB-02] Optimize a Java-based application (Konakart) with JMeter

[AIAB-02] Explore the results

Previous[AIAB-02] Create the studyNext[AIAB-03] Optimize a Java-based application (Konakart) with LRE

Last updated 2 years ago

Was this helpful?

Let's now take a look at the results and benefits Akamas achieved in this real-life optimization.

Notice: in your environment, you might achieve different results with respect to what is described in this guide. The actual best configuration might depend on your actual setup - operating systems, cloud or virtualization platform, and the hardware

Application throughput increased by 30%

By optimally configuring the application configurations (JVM options), Akamas increased the application throughput by 30%:

The automatic optimization took 15 hours

Properly tuning a modern JVM is a complex challenge, and might require weeks of time and effort even for performance experts.

Akamas was able to find the optimal JVM configuration after a bit more than half a day of automatic tuning:

How did Akamas achieve that? A look at the best configurations

In the Summary tab you can quickly see the optimal JVM configuration Akamas found:

As you can see, without being told anything about how the application works, Akamas learned the best settings for some interesting JVM parameters:

  • it almost tripled the JVM max heap size

  • it changed the garbage collector from G1 (the default) to Parallel, and it adjusted the number of GC threads

  • it significantly changed the sizing of the Survivor spaces and the new generation

Those are not easy settings to tune manually!

Besides increasing throughput, Akamas also made the application run 23% faster

Another very interesting side benefit is that the optimized configuration not only improved application throughput, but also made Konakart run 23% with respect to the baseline (Configuration Analysis tab):

Also notice how the 3rd best configuration actually improved response time even more (26%).

The best configuration significantly increased application scalability and resiliency

The significant effects the optimal configuration had on application scalability can be also analyzed by looking at the over-time metrics (Metrics tab).

As you can see, the best configuration highly increased the application scalability and the ability to sustain peak traffic volumes with very low response times. Also notice how Akamas automatically detected the peak throughput achieved by the different configurations while keeping the response time under 100 ms, as per the goal constraints.

The best configuration made the application run more efficiently on the CPU (hence less costly on the cloud)

As a final but important benefit, the best configuration Akamas identified is also more efficient CPU-wise. As you can see by looking at the jvm.jvm_cpu_used metric, at peak load the CPU consumption of the optimized JVM was more than 20% less than the baseline configuration. This can translate to direct cost savings on the cloud, as it allows using a smaller instance size or container.

Congratulations, you have just done your first Akamas optimization of a real-life Java application in a performance testing environment with JMeter and Prometheus!