JVM之性能调优三部曲思路
- 第一步:性能监控
(1)概念
性能监控是一种以非强行或入侵方式收集或查看应用运营性能数据的活动。监控通常是指一种在生产,质量评估或开发环境下实施的带有预防或主动性的活动。当应用相关人员提出性能问题却没有提供足够多的线索时,首先我们需要进行性能监控,然后是性能分析。
(2)监控的各个方面
① GC频繁
② CPU load过高
③ 出现OOM
④ 内存溢出
⑤ 死锁
⑥ 程序响应时间较长 - 第二步: 性能分析
(1)概念
性能分析是一种以侵入方式收集运行性能数据的活动,它会响应应用的吞吐量或响应性。性能分析很少在生产环境下进行,通常在质量评估,系统测试或开发环境下进行,是性能监控后的步骤。
(2)分析方法
① 打印GC日志,通过GCviewer或http://gceasy.io来分析日志信息
② 灵活运用命令行工具:jstack,jmap,jinfo等
③ dump出堆文件,使用内存分析工具分析文件
④ 使用阿里Arthas,或jconsole,JVisualVM来实时查询JVM状态
⑤ 使用jstatck查看堆栈信息 - 第三步:性能调优
(1)概念
性能调优是一种为改善应用响应性或吞吐量而更改参数,源代码,属性配置的活动。
(2)调优方法
① 适当的增加内存,根据业务背景选择垃圾回收器
② 优化代码,控制内存使用
③ 增加机器,分散节点压力
④ 合理设置线程池线程数量
⑤ 使用中间件提高程序效率,比如缓存,消息队列等