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参数进行调优

猜你喜欢

转载自www.cnblogs.com/chx9832/p/12457389.html