• Tomcat压力测试与优化方案


    一.Tomcat压力测试,通过调整参数以及配置优化Tomcat


      1.部署一个web工程,测试访问(需安装mysql和jdk)
                    1.1.1 将SQL脚本执行,生成对应的数据库
                        将SQL脚本上传到服务器,通过 cat dashboard.sql | mysql -uroot -p

          


                    1.1.2 部署项目

          将该项目上传到Linux系统中Tomcat解压目录下webapps文件夹
                        找到项目,修改jdbc.properties配置文件,根据实际情况

          vim jdbc.properties

          


                       
                    1.1.3 启动Tomcat
                        客户端进行访问:http://192.168.42.123:8080/index

          


                        
                
      2.Jmeter压力测试工具
                    解压完成后进入bin目录,双击jmeter.bat启动,启动可以通过Opetions下有个Choose Lanauge选择简体中文

    也可修改为白色主题

     


                    2.1 新建一个线程组,线程数量为1000,循环次数为10


                    2.2 点击线程组新建一个HTTP协议取样器
                        采用http协议,地址为linux地址,端口为tomcat8080端口,访问地址为/index

     

         2.3 添加请求监控


                    2.4 点击启动进行测试

    在聚合报告中,重点看吞吐量。

     


                    
      3.Tomcat优化方案

        没有进行任何配置的情况下:
        平均请求处理时间:61319
        Error错误率:44.38%
        吞吐量:12.8/S
                
                    3.1 优化方案一:禁用AJP服务
                        停止tomcat:切换到bin目录通过./shutdown.sh
                        找到tomacat解压目录的conf文件夹下,将server.xml当中的AJP服务注释


                        bin目录启动:./startup.sh && tail -f ../logs/catalina.out
                        
                        测试结果如下:

     


                            平均请求处理时间:23900+-
                            Error错误率:55%+-
                            吞吐量:20/S+-
                            
                    3.2 优化方案二:启动执行器(线程池)
                        测试一:`最多线程为500

              初始为50

              最大队列等待个数100

              将运行模式改为nio2


                            停止tomcat:切换到bin目录通过./shutdown.sh
                            找到tomacat解压目录的conf文件夹下,修改server.xml
                            
                         

     <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="100"/>
    
    <Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443" />

              


                            bin目录启动:./startup.sh && tail -f ../logs/catalina.out
                            
                            
                            平均请求处理时间:4200
                            Error错误率:9.30%
                            吞吐量:180/S
                           
                    
      4.Tomcat优化方案:JVM参数进行优化
                    4.1 启用并行垃圾收集器
                        修改catalina.sh配置文件
          

    JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms64m -Xmx512m
    -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps
    -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

     使用gceasy.io网站进行日志分析


                        得出结论:年轻代内存分配太小。整个堆内存分配太小

    JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms128m 
    -Xmx1024m -XX:NewSize=64m -XX:MaxNewSize=256m -XX:+PrintGCDetails 
    -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC 
    -Xloggc:../logs/gc.log"

                    4.2 启用G1垃圾收集器

    JAVA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xms128m 
    -Xmx1024m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 
    -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

        G1效率最高
            
      5.Tomcat优化时,要不断的去测试适合当前环境的配置

        tomcat性能优化就是需要不断的进行调整参数,然后测试结果,可能会调优也可能会调差
        这时就需要借助于gc的可视化工具来看gc的情况。再帮我我们做出决策应该调整哪些参数
     
     

      总结

        优化点:1.Tomcat配置    

            2.JVM参数进行调优

  • 相关阅读:
    Redis分布式限流器
    [转] 详解Spring boot启动原理
    [转] 总结了N个真实线上故障
    加一(66)
    原地删除(27)
    旋转数组(189)
    买卖股票的最佳时机 II(122)
    最长公共前缀(14)
    两个数组的交集II(350)
    Django时区及naive datetime object和aware datetime object的区别
  • 原文地址:https://www.cnblogs.com/chx9832/p/12457389.html
Copyright © 2020-2023  润新知