Death to the Java Profiler How to make Java really fast.
Intro Start install of https://github.com/eostermueller/performanceGolf/wiki/Install-and-Run What is healthy response time of 3 Threads of load Zero think time Java → TCP → Java ...where both Java’s are on the same machine?
The Problem healthcare.gov-ish performance Multi-second response time
Methodology ….home pages of the major hotel sites from the ten largest U.S. metropolitan areas on high-speed links attached to key points on the largest U.S. Internet Service Provider (ISP) backbones. http://www.keynote.com/performance-indexes/lodging-us
The Dream The latest version: https://github.com/mybatis/jpetstore-6
JPetStore is Old School Performance Fast before: Before the LMAX Disruptor (Martin Thompson) Before the http://www.reactivemanifesto.org/ Name your performance technology du jour. Just plain old java is required.
Obstacles Lack of Visibility / Tools The right monitoring is Expensive Only available in some environments Lack of Expertise Only a small % of Java developers have the expertise Mindset “Premature Optimization is the root of…..”
A Story and a Demo
Manual Call Stack Sampling Apply load Take about 4 dumps, a few seconds between each dump. if you see a particular something that you could fix…. ...and it shows up on two+ stacktraces, ones that are actually under load, ...then it is worth fixing.
Manual Call Stack Sampling Three Books, two of them have been read Partial Endorsement: Java Performance, The Definitive Guide Scott Oaks Partial Endorsement: Java Performance, Charlie Hunt Full Endorsement: Building Better Applications, Michael Dunlavey mathematical explanation
Less is More I’m not suggesting to learn more about trouble shooting Java monitors/locks ...although that’s not a bad idea.
Less is More Limit what you look at in the thread dump. Less. Production: Only consider threads in your package space Test: Same, but also Only 3 threads of load Every SOA-service-sized component (or larger) must be load tested during development
Obstacles - Revisited Lack of Visibility / Tools Use plug-it-in-now tools for all JVMs running in your world Lack of Expertise Need a “Starting Point” -- a curriculum, the book I’m working on: Working title: JVM Performance Troubleshooting Mindset ...that remains to be seen.
The End Erik Ostermueller @eostermueller eostermueller@gmail.com