JVM调优实践-Tomcat调优

调优几个重要指标

GC频率

提升每次GC的效率

准备环节

jmeter的配置

JVM调优实践-Tomcat调优_第1张图片

未压测前JVM配置

工程未调优前配置

-Xms400m

-Xmx400m

-XX:PermSize=64m

-XX:MaxNewSize=128m

-XX:MaxPermSize=128m

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-Xloggc:gc.log

环境配置

Tomcat在台式机上

每次压测前清除gc.log,重启Tomcat

Jmeter 200线程,在tomcat启动2分钟后开始执行,持续20分钟


结果分析

通过GC日志分析GC频率

根据Jmeter结果记录吞吐率,平均响应速度,等

借助工具

Jmeter,对tomcat进行压力测试,模拟用户请求

Java VisualVM,JVM进行性能监控,做时间记录,CPU使用情况记录。

Gchisto GC日志分析工具


压测过程

第一次压测

压测前通过VisualVM看到的jvm图表

JVM调优实践-Tomcat调优_第2张图片

压测20分钟后

JVM调优实践-Tomcat调优_第3张图片

GC日志

JVM调优实践-Tomcat调优_第4张图片

JVM调优实践-Tomcat调优_第5张图片

新生代GC次数:1602

Full GC次数:   38

Jmeter结果

JVM调优实践-Tomcat调优_第6张图片

第二次压测

增大堆内存,新生代内存,以减小GC频率

-Xms600m

-Xmx600m

-XX:PermSize=128m

-XX:MaxNewSize=200m

-XX:MaxPermSize=128m

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-Xloggc:gc.log

压测后GC日志

JVM调优实践-Tomcat调优_第7张图片

JVM调优实践-Tomcat调优_第8张图片

JVM图表

JVM调优实践-Tomcat调优_第9张图片

Jmeter结果图表

JVM调优实践-Tomcat调优_第10张图片

第三次压测

减少每次GC的时间

-Xms600m

-Xmx600m

-XX:PermSize=128m

-XX:MaxNewSize=200m

-XX:MaxPermSize=128m

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-Xloggc:gc.log

-Xverify:none

-XX:+UseConcMarkSweepGC                     使用CMS垃圾收集器               

-XX:ParallelCMSThreads=8                       并行的CMS线程数为8

-XX:+UseCMSCompactAtFullCollection  FullGC的时候压缩内存

-XX:CMSFullGCsBeforeCompaction=0    每执行多少次FullGC,执行一次内存压缩

-XX:+UseParNewGC                                     新生代回收也用并行回收

GC日志

JVM调优实践-Tomcat调优_第11张图片

JVM调优实践-Tomcat调优_第12张图片

JVM图表

JVM调优实践-Tomcat调优_第13张图片

Jmeter压测结果

JVM调优实践-Tomcat调优_第14张图片

结论

JVM调优实践-Tomcat调优_第15张图片

通过调整JVM新生代与老年代内存占比与大小,还有GC的回收器,可以增加程序的吞吐,提高程序的处理能力。


你可能感兴趣的:(JVM)