Practical Performance Analysis
summary
Practical, stepwise performance recipe: set up one server, many loader clients and a probe, tune OS (open files, ephemeral ports, CPU governor) and JVM (use Java 21 and generational ZGC, enable async-safe profiling), then run steady-state and limit benchmarks while tracking CPU, network, disk, threads, GC and errors. Examples from Jetty 12 show 240,000 req/s with four 60k loaders, a 120k run stalled by a single busy sender thread (fix: use two sender threads), async-profiler flamegraphs expose hot exception allocations and an API change (return boolean instead of processor) that measurably speeds request handling.
AI-written summary · about
chapters (14)
- 0:00Welcome and Jetty intro
- 2:09Performance analysis matters
- 6:04Steady state vs limit testing
- 9:39Load test environment setup
- 14:49OS and JVM tuning for testing
- 17:36Choosing load testing tools
- 20:51Performance baseline setup
- 22:58USE method analysis
- 26:09Profiling for tuning
- 28:37CPU bottleneck case study
- 31:47CPU Governor impact
- 34:16Flame graph analysis
- 35:18API design for performance
- 36:42Key takeaways and Q&A
related talks
47mPractical Performance Analysis
48mFantastic Performance and Where to Find It
46mReal-world HTTP benchmarking
54mReal-World HTTP Performance Benchmarking, Lessons Learned
50mJPoint 2023 TechRadar: Performance Tools
38mPerformance in the Wild
54mThe Dark Arts of Performance Tuning
33mReaching Ludicrous Speed
