您的位置:首页 > 运维架构 > Tomcat

JVM调优实践-Tomcat调优

2016-06-12 16:27 459 查看

调优几个重要指标

GC频率

提升每次GC的效率

准备环节

jmeter的配置



未压测前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图表



压测20分钟后



GC日志





新生代GC次数:1602次

Full GC次数:   38次

Jmeter结果





4000
第二次压测


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

-Xms600m

-Xmx600m

-XX:PermSize=128m

-XX:MaxNewSize=200m

-XX:MaxPermSize=128m

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-Xloggc:gc.log


压测后GC日志





JVM图表



Jmeter结果图表




第三次压测


减少每次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图表



Jmeter压测结果



结论



通过调整JVM新生代与老年代内存占比与大小,还有GC的回收器,可以增加程序的吞吐,提高程序的处理能力。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息