zoukankan      html  css  js  c++  java
  • 部署测试JAVA Web和Tomcat配置优化

    一、部署测试用的java web项目 

        为了方便测试性能,我们将部署一个java web项目,这个项目本身和本套课程没有什么
      关系,仅仅用于测试。 

    二、创建数据库

      随便找一个本地的数据库,在linux服务器上执行。 

    三、部署web应用

      1、在资料中找到dashboard-web.war,上传到linux服务器,进行部署安装。

    cd /tmp/apache‐tomcat‐8.5.34/webapps
    rm ‐rf *
    mkdir ROOT
    cd ROOT/
    rz上传war包
    jar ‐xvf dashboard‐web.war
    rm ‐rf dashboard‐web.war
    #修改数据库配置文件
    cd /tmp/apache‐tomcat‐8.5.34/webapps/ROOT/WEB‐INF/classes
    vim jdbc.properties
    #这里根据自己的实际情况进行配置
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://node01:3306/dashboard?
    useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueri
    es=true
    jdbc.username=root
    jdbc.password=root

      2、重新启动tomcat

        

     四、使用Apache JMeter进行测试  

        Apache Jmeter是开源的压力测试工具,我们借助于此工具进行测试,将测试出tomcat
      的吞吐量等信息。

      1、下载地址:http://jmeter.apache.org/download_jmeter.cgi 

       

      2、安装:直接将下载好的zip压缩包进行解压即可

       

      3、进入bin目录,找到jmeter.bat文件,双机打开即可启动。

       

      4、启动页面入选

      

     四、Tomecat配置优化

     简介:

      通过上面测试可以看出,tomcat在不做任何调整时,吞吐量为73次/秒

     1.禁用AJP服务

      

        可以看到,禁用AJP服务后,吞吐量会有所提升。当然了,测试不一定准确,需要多测试几次才能看出是否有提升。

      2.设置线程池

        通过设置线程池,调整线程池相关的参数进行测试tomcat的性能。

        2.1.最大线程数为500,初始为50

    1

    2

     <Executor name="tomcatThreadPool" namePrefix="catalina‐exec‐"
            maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true"/>

        结果如下:

        吞吐量为128次/秒,性能有所提升。

         2.2最大线程数为1000,初始为200 

    1
    <Executor name="tomcatThreadPool" namePrefix="catalina‐exec‐" maxThreads="1000" minSpareThreads="200" prestartminSpareThreads="true"/>

      

        吞吐量为151,性能有所提升。

      2.3最大线程数为5000,初始为1000 

        是否是线程数最多,速度越快呢? 我们来测试下

    1
    <Executor name="tomcatThreadPool" namePrefix="catalina‐exec‐" maxThreads="5000" minSpareThreads="1000" prestartminSpareThreads="true"/>

      

        可以看到,虽然最大线程已经设置到5000,但是实际测试效果并不理想,并且平均的响应时间也边长了,所以单纯靠提升线程数量是不能一直得到性能提升的

        2.4设置最大等待队列数 

        默认情况下,请求发送到tomcat,如果tomcat正忙,那么该请求会一直等待。这样虽然可以保证每个请求都能请求到,但是请求时间就会边长。有些时候,我们也不一定要求请求一定等待,可以设置最大等待队列大小,如果超过就不等待了。这样虽然有些请求是失败的,但是请求时间会虽短。典型的应用:12306。
    1
    <!‐‐最大等待数为100‐‐> Executor name="tomcatThreadPool" namePrefix="catalinamaxThreads="500" minSpareThreads="100" prestartminSpareThreads="true" maxQueueSize="100"/>

      

        测试结果:
          平均响应时间:3.1秒
          响应时间明显缩短
          错误率:49.88%
          错误率提升到一半,也可以理解,最大线程为500,测试的并发为1000
          吞吐量:238次/秒
          吞吐量明显提升
          结论:响应时间、吞吐量这2个指标需要找到平衡才能达到更好的性能。

    3.设置nio2的运行模式 

      将最大线程设置为500进行测试: 

    1
    <Executor name="tomcatThreadPool" namePrefix="catalina‐exec‐" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true"/> <!‐‐ 设置nio2 ‐‐> <Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443" />

      

     4.调整JVM参数进行优化

      接下来,测试通过jvm参数进行优化,为了测试一致性,依然将最大线程数设置为500,启用nio2运行模式。 

      修改catalina.sh配置文件

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

        测试结果与默认的JVM参数结果接近。
        设置G1垃圾回收器
    #设置了最大停顿时间100毫秒,初始堆内存128m,最大堆内存1024m JAVA_OPTS="‐XX:+UseG1GC ‐XX:MaxGCPauseMillis=100 ‐Xms128m ‐Xmx1024m ‐ XX:+PrintGCDetails ‐XX:+PrintGCTimeStamps ‐XX:+PrintGCDateStamps ‐ XX:+PrintHeapAtGC ‐Xloggc:../logs/gc.log"

        
  • 相关阅读:
    Using X++ code Hided to Main Content Panel Frame
    Call a method on caller form
    Infolog in the Dynamics AX 2009
    Using X++ code Customizations to statusLine
    Using X++ Code force Synchronisation DataBase
    英语口语精选100句(转)
    OpenPrinter_1: rc:0 lastError:1801(0x709) The printer name is invalid
    30岁前不要去在乎的29件事(转)
    安全措施挡出黑客攻击
    接口的实便
  • 原文地址:https://www.cnblogs.com/tinghao/p/12458185.html
Copyright © 2011-2022 走看看