Beyond default settings: Optimizing Java on K8s with AI-driven performance tuning

Modern Java applications are increasingly deployed on Kubernetes, aiming for fast horizontal scaling, efficient resource usage and consistent peak performance.

However, reality often falls short of this ideal. The JVM was not designed for cloud-native environments, leading to common issues like excessive CPU usage, long warmup times and unpredictable latency spikes.

But this doesn’t mean the JVM can’t thrive on K8s! The solution lies in mastering the complex configuration interplay across the full stack, including JVM settings (e.g. GC, JIT) and K8s pod parameters (resource requests/limits, HPA scaling policies).

In this talk, I will demonstrate how to apply automated experimentation and AI-driven optimization to find the optimal configuration in this vast configuration space. We will analyze real-world scenarios where tuning specific flags unlocked 20%-50% JVM performance and efficiency gains, proving that data-driven tuning beats default settings and manual tuning.