zoukankan      html  css  js  c++  java
  • Tomcat优化(压力测试)

    一.Tomcat压力测试,通过调整参数以及配置优化Tomcat
       1.部署一个web工程,测试访问
        1.1.1 将SQL脚本执行,生成对应的数据库
         将SQL脚本上传到服务器,通过 cat 脚本.sql | mysql -uroot -p
        1.1.2 部署项目
         找到项目,修改jdbc.properties配置文件
         将该项目上传到Linux系统中Tomcat解压目录下webapps文件夹
        1.1.3 启动Tomcat
         客户端进行访问:http://192.168.7.22:8080/dashboard-web/index
         
       
       2.Jmeter压力测试工具
        解压完成后进入bin目录,双击jmeter.bat启动,启动可以通过Opetions下有个Choose Lanauge选择简体中文
        2.1 新建一个线程组,线程数量为1000,循环次数为10
        2.2 点击线程组邮件新建一个HTTP协议取样器
         采用http协议,地址为linux地址,端口为tomcat8080端口,访问地址为dashboard-web/index
        2.3 新建一个查询结果,点击启动进行测试
        
       3.Tomcat没有进行任何配置的情况下:
        平均请求处理时间:6195
        Error错误率:0.00%
        吞吐量:154/S
       
        3.1 优化方案一:禁用AJP服务
         停止tomcat:切换到bin目录通过./shutdown.sh
         找到tomacat解压目录的conf文件夹下,将server.xml当中的AJP服务注释
         bin目录启动:./startup.sh && tail -f ../logs/catalina.out
         
         测试结果如下:
          平均请求处理时间:5200
          Error错误率:0.00%
          吞吐量:170/S
          
        3.2 优化方案二:启动执行器(线程池)
         测试一:最多线程为500,初始为50
          停止tomcat:切换到bin目录通过./shutdown.sh
          找到tomacat解压目录的conf文件夹下,将server.xml
          
          <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true"/>
          <Connector executor="tomcatThreadPool"  port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
           
          
          bin目录启动:./startup.sh && tail -f ../logs/catalina.out
          
          
          平均请求处理时间:4200
          Error错误率:9.30%
          吞吐量:180/S
          
         测试一:最多线程为1000,初始为200
          平均请求处理时间:5000
          Error错误率:1.3%
          吞吐量:165/S
         
         单纯对线程进行提升,是不能够完全提交Tomcat性能
         
         
         测试二:设置最大队列等待个数
          <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="100"/>
          <Connector executor="tomcatThreadPool"  port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
              
         测试三:将运行模式该为noi2
          <Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443" />
        
       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"
          
         得出结论:年轻代内存分配太小。整个堆内存分配太小
          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"
      
       5.Tomcat优化时,要不断的去测试适合当前环境的配置,优化点:1.Tomcat配置     2.JVM参数进行调优
  • 相关阅读:
    AX ERROR: Could not find my mock parent, most likely I am stale 不及格的程序员
    利用Segue在视图控制器间传值的问题 不及格的程序员
    Creating a Singleton Instance 不及格的程序员
    iPad 通知 UIKeyboardWillShowNotification 不会在keyBoard处在Undock状态下接到通知 不及格的程序员
    Why RootViewController's view is rotated Automatically by System when the app first loaded? 不及格的程序员
    如何弹出UIDatePicker最好 不及格的程序员
    jQuery开始做恶了 不及格的程序员
    what is the SEL,id and IMP,Class ,Method? 不及格的程序员
    Objectivec 字符串比较的陷井 不及格的程序员
    Unable to create any keyboard shortcuts after the iOS 6.1.3 update on iPad. 不及格的程序员
  • 原文地址:https://www.cnblogs.com/F017/p/12456810.html
Copyright © 2011-2022 走看看