zoukankan      html  css  js  c++  java
  • JVM调优实践-Tomcat调优

    调优几个重要指标

    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结果


    第二次压测

    增大堆内存,新生代内存,以减小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的回收器,可以增加程序的吞吐,提高程序的处理能力。


  • 相关阅读:
    SELENIUM2 使用JavascriptExecutor在页面Javascipt执行
    用Merge来改写相关更新的例子
    Oracle --获取绑定变量的值.
    [NewLife.XCode]高级统计(数据报表利器)
    [NewLife.XCode]分表分库(百亿级大数据存储)
    [NewLife.XCode]导入导出(实体对象百变魔君)
    [NewLife.XCode]角色权限
    [NewLife.XCode]实体工厂(拦截处理实体操作)
    [NewLife.XCode]百亿级性能
    [NewLife.XCode]对象字典缓存(百万军中取敌首级)
  • 原文地址:https://www.cnblogs.com/uwannerme/p/5692828.html
Copyright © 2011-2022 走看看