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的回收器,可以增加程序的吞吐,提高程序的处理能力。


  • 相关阅读:
    C++学习 之 程序的组成部分(部分知识笔记)
    debian下重装mysql
    CGI 环境变量
    boost的libboost_system问题
    debian下使用shell脚本时出现了 declare:not found 解决方法
    编译的时候出现"/usr/bin/ld: cannot find -lz
    glibc升级,解决glib版本过低的问题
    ubuntu彩色图形界面
    (转)http://blog.chinaunix.net/uid-8363656-id-2031644.html CGI 编写
    linux安装JSONCPP
  • 原文地址:https://www.cnblogs.com/uwannerme/p/5692828.html
Copyright © 2011-2022 走看看