JVM学习之性能调优

 

目录

背景

调优三部曲

发现问题

排查问题

解决问题

测试指标

响应时间

吞吐量

并发数

内存占用

相互间的关系


背景

从这儿开始JVM笔记的最后一部分——性能调优,包括调优工具(命令行工具、gui工具)、JVM参数、日志解析,本文则是一个开头

调优三部曲

发现问题

GC频繁、CPU负载过高、OOM、内存泄漏、死锁、响应时间太长(ANR)

排查问题

1)、打印GC日志、通过GCViewer或者http://gceasy.io来分析

2)、使用jstack、jmap、jinfo等命令行工具

3)、dump出堆文件,并分析

4)、使用Arthas、jconsole或者JVisualVM来实时查看JVM状态

5)、jstack查看堆栈信息

解决问题

1)、适当增加内存、选择回收器

2)、优化代码,控制内存使用

3)、增加机器,负载均衡

4)、合理设置线程池线程数量

5)、使用中间件提高程序效率,比如缓存、消息队列等

测试指标

响应时间

提交请求和得到返回结果之间使用的时间。在GC中,暂停时间是指执行GC时,程序的工作线程被暂停(STW)的时间

吞吐量

单位时间内完成的工作量。在GC中,吞吐量指的是运行用户代码时间占总运行时间的比例,涉及参数-XX:GCTimeRatio=n,吞吐量=1 - 1/(1 + n)

并发数

同一时刻和服务器有实际交互的请求数

内存占用

java堆所占内存的大小

相互间的关系

并发数变大,响应时间会下降,吞吐量会先升后降;JVM性能调优主要关注响应时间和吞吐量

猜你喜欢

转载自blog.csdn.net/qq_37475168/article/details/114778829