If you have ever raised a JVM Heap size in production to cope with unexpected Out of Memory errors or huge garbage collection time, please raise your hand.
Best practices tell us to anticipate these kinds of situations in order to reduce user impact, find better solutions and reduce operational efforts but reality says that it’s damn hard to assess application performance during performance tests and optimize the application for speed, reliability or cost-effectiveness. Who has been there, knows that it’s even harder to find a smarter solution than just “increase the heap” or “buy a bigger engine”. A single JVM today has more than 800 options that can be set: how can you find the best settings?
In this talk we explore the wide range of benefits offered by shifting performance testing and optimization practices closer to the development, leveraging DevOps practices of integrating configuration management in the CI pipeline and introducing Artificial Intelligence to achieve Continuous Optimization.
We will share a real use case where this approach enabled unprecedented levels of performance optimization by evaluating different garbage collectors and other JVM options to get the best performance for each workload, improving both application throughput and resiliency to withstand traffic peaks with no downtime.