JVM调优实践-Tomcat调优

调优几个重要指标

GC频率

提升每次GC的效率

准备环节

jmeter的配置

JVM调优实践-Tomcat调优

JVM调优实践-Tomcat调优
JVM调优实践-Tomcat调优
JVM调优实践-Tomcat调优
JVM调优实践-Tomcat调优
JVM调优实践-Tomcat调优
JVM调优实践-Tomcat调优
JVM调优实践-Tomcat调优
JVM调优实践-Tomcat调优

JVM调优实践-Tomcat调优

未压测前JVM配置

工程未调优前配置

-Xms400m

-Xmx400m

-XX:PermSize=64m

-XX:MaxNewSize=128m

-XX:MaxPermSize=128m

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-Xloggc:gc.log

环境配置

Tomcat在台式机上

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

分钟

结果分析

通过GC日志分析GC频率

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

借助工具

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

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

Gchisto GC日志分析工具

压测过程

第一次压测

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

JVM调优实践-Tomcat调优

压测20分钟后

JVM调优实践-Tomcat调优JVM调优实践-Tomcat调优JVM调优实践-Tomcat调优

GC日志

JVM调优实践-Tomcat调优

JVM调优实践-Tomcat调优

JVM调优实践-Tomcat调优

JVM调优实践-Tomcat调优

Jmeter结果

JVM调优实践-Tomcat调优

第二次压测

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

-Xms600m

-Xmx600m

-XX:PermSize=128m

-XX:MaxNewSize=200m

-XX:MaxPermSize=128m

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-Xloggc:gc.log

压测后GC日志

JVM调优实践-Tomcat调优

JVM调优实践-Tomcat调优

JVM图表

JVM调优实践-Tomcat调优JVM调优实践-Tomcat调优JVM调优实践-Tomcat调优

Jmeter结果图表

JVM调优实践-Tomcat调优

第三次压测

减少每次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调优

JVM调优实践-Tomcat调优

JVM图表

JVM调优实践-Tomcat调优JVM调优实践-Tomcat调优JVM调优实践-Tomcat调优

Jmeter压测结果

JVM调优实践-Tomcat调优

结论

JVM调优实践-Tomcat调优

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

上一篇:基于 HTML5 的工业互联网 3D 可视化应用


下一篇:COJ 2108 Day7-例1