JVM性能分析方案
1. 性能目标与指标
- 核心指标:响应时间(P99/P95)、吞吐量(TPS)、GC停顿时间、CPU/内存使用率
- 目标示例:GC停顿≤100ms,吞吐量≥1000 TPS
2. 测试环境与方法
- 环境模拟:生产环境配置(CPU/内存/OS),Docker容器化部署
- 测试类型:
- 宏基准测试:JMeter模拟真实用户请求
- 介基准测试:隔离核心模块(如订单处理)
- 微基准测试:JMH测试热点方法
3. 监控工具与数据采集
工具/技术 | 用途 | 关键命令/参数 |
---|---|---|
JFR | 全量性能监控 | -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s |
jstat | GC实时统计 | jstat -gcutil <pid> 1000 |
jstack | 线程状态分析 | jstack <pid> > threads.txt |
MAT | 堆内存泄漏分析 | jmap -dump:format=b,file=heap.hprof <pid> |
AsyncProfiler | CPU热点分析 | profiler.sh -d 30 -o flamegraph.html <pid> |
4. 数据分析与瓶颈定位
- GC问题:JFR查看GC停顿时间,老年代增长率
- CPU瓶颈:火焰图分析热点方法(如字符串处理、循环逻辑)
- 锁竞争:jstack查找BLOCKED线程,分析锁持有者
- 内存泄漏:MAT支配树定位大对象,检查引用链
5. 调优验证与迭代
- 对比测试:调整参数后重新压测,对比性能指标
- 灰度发布:生产环境小流量验证
- 长期监控:Prometheus+Grafana监控,设置GC停顿>500ms告警