Tomcat之NIO和APR性能对比

寄上一篇Tomcat的接收请求方式:BIO/NIO/APR继续

环境介绍

version:Apache Tomcat 8.5
操作系统:Mac OS X 10.14.5
JVM:1.8.0

测试数据场景:获取一个电商系统中的一个商品首页数据
测试工具:ab压力测试

环境配置

  1. 在一台或者环境一样两台机器上搭配两个Tomcat,我是一台Mac OS X 10.14.5,所以一台机器同时运行两个Tomcat应用服务器,这个配置方式请参考:两个一样的tomcat不能同时启动解决方法
  2. 两个Tomcat应用服务器server.xml配置分别,请参考:Tomcat的接收请求方式:BIO/NIO/APR
  3. 端口:APR:8081 和 NIO:8082
<Connector port="8082" protocol="org.apache.coyote.http11.Http11NioProtocol"
           connectionTimeout="20000"
           redirectPort="8442" />
           
<Connector port="8081" protocol="org.apache.coyote.http11.Http11AprProtocol"
           connectionTimeout="20000"
           redirectPort="8441" />

配置如好,分别启动如下图

测试性能

测试方法:ab压力测试
请求处理条数:1000
并发数:100

命令

APR:ab -n 1000 -c 100 http://127.0.0.1:8081/app-customer-guide/product/detail?productId=60e6402730cb40d4a304afb671726937&t=1555393258040

NIO:ab -n 1000 -c 100 http://127.0.0.1:8082/app-customer-guide/product/detail?productId=60e6402730cb40d4a304afb671726937&t=1555393258040

请求界面


请求数据对比数据:Requests per second (吞吐率)
计算公式:总请求数/处理完成这些请求数所花费的时间,即
Request per second=Complete requests/Time taken for tests

请求方式 第一次 第二次 第三次 第四次 第五次 第六次 第七次
NIO 10680.11 13599.15 13556.38 14628.22 15350.84 12232.42 15115.10
APR 9348.77 11787.73 13090.89 13919.24 12253.85 14820.08 12099.36

请求数据对比数据:Time taken for tests(处理完成这些请求数所花费的时间)

请求方式 第一次 第二次 第三次 第四次 第五次 第六次 第七次
NIO 0.094 0.074 0.074 0.068 0.065 0.082 0.066
APR 0.107 0.074 0.076 0.077 0.072 0.067 0.083

注:开启了apr之后,jvm用到的native内存会增大

Jconsole观察记录

一次100的并发量请求执行数1000,循环两分钟

APR处理方式

Tomcat之NIO和APR性能对比_第1张图片

NIO处理方式

Tomcat之NIO和APR性能对比_第2张图片

以上只是片面的测试,覆盖率和环境都有局限性,如果有错误的地方或好的意见请不吝赐教,共同讨论。谢谢

你可能感兴趣的:(Tomcat)