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

请求方式第一次第二次第三次第四次第五次第六次第七次
NIO10680.1113599.1513556.3814628.2215350.8412232.4215115.10
APR9348.7711787.7313090.8913919.2412253.8514820.0812099.36

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

请求方式第一次第二次第三次第四次第五次第六次第七次
NIO0.0940.0740.0740.0680.0650.0820.066
APR0.1070.0740.0760.0770.0720.0670.083

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

Jconsole观察记录

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

APR处理方式

在这里插入图片描述

NIO处理方式

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值