部署测试JAVA Web和Tomcat配置优化 一、部署测试用的java web项目  二、创建数据库 三、部署web应用  四、使用Apache JMeter进行测试    四、Tomecat配置优化

    为了方便测试性能,我们将部署一个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

    部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化

 四、使用Apache JMeter进行测试  

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

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

  部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化 

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

  部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化 

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

   部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化

  4、启动页面入选

  部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化

 四、Tomecat配置优化

 简介:

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

 1.禁用AJP服务

  部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化

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

  2.设置线程池

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

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

1

2

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

    结果如下:

部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化

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

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

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

  部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化

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

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

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

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

  部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化

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

    2.4设置最大等待队列数 

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

  部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化

    测试结果:
      平均响应时间: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" />

  部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化

 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"

部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化

    测试结果与默认的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"

部署测试JAVA Web和Tomcat配置优化
一、部署测试用的java web项目 
二、创建数据库
三、部署web应用
 四、使用Apache JMeter进行测试  
 四、Tomecat配置优化