一、性能优化的步骤
1、发现问题-性能监控
- GC频繁
- cup load 过高
- OOM
- 内存泄漏
- 死锁
- 程序响应时间长
2、排查问题-性能分析
- 打印GC日志,通过GCviewr或者gceasy分析日志信息
- 命令行工具:jstack、jmap、jinfo等
- dump出堆文件,使用内存分析工具分析文件
- 使用阿里Arthas或者jconsle、JVisualVM来实时查看JVM状态
- jstack查看堆、栈信息
3、解决问题-性能调优
- 适当增加内存、根据业务场景选择垃圾回收器
- 优化代码、控制内存使用
- 增加机器、分散节点压力
- 合理配置线程池线程数量
- 使用中间件提高程序效率,如消息队列、缓存
二、性能指标
- 停顿时间、响应时间
- 吞吐量
- 对单位时间内完成的工作量
- 在GC中,运行用户代码的时间占总时间的比例
- 并发数,同一时刻度服务器有实际交互的请求数,在线人数的5%~15%之间
- 内存占用,java堆所占内存的大小