Tomcat性能调优

Tomcat支持的四种I/O模型介绍

什么是线程I/O模型?
当我们进行一次磁盘读写操作的时候,可以选择使用怎么样的方式来提高我们的执行效率?
通常情况下IO操作是比较耗时的,所以为了搞笑的使用硬件,应用程序可以用一个专门线程进行IO操作,而另外一个线程则利用CPU的空闲去做去做其他计算。这种为提高应用执行效率而采用的IO操作方法即为IO模型。

Tomcat所支持的四种I/O模型

  1. BIO模型:同步阻塞式IO,即Tomcat使用传统的java.io进行操作。该模式下每个请求都会创建一个线程,对性能开销大,不适合高并发场景。优点是稳定,适合连接数目小且固定架构。
  2. NIO模型:同步非阻塞式IO,jdk1.4 之后实现的新IO。该模式基于多路复用选择器监测连接状态在同步通知线程处理,从而达到非阻塞的目的。比传统BIO能更好的支持并发性能。Tomcat 8.0之后默认采用该模式
  3. APR模型:全称是 Apache Portable Runtime/Apache可移植运行库),是Apache HTTP服务器的支持库。可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作。使用需要编译安装APR 库
  4. AIO模型:异步非阻塞式IO,jdk1.7后之支持 。与nio不同在于不需要多路复用选择器,而是请求处理线程执行完程进行回调调知,已继续执行后续操作。Tomcat 8之后支持。

配置Tomcat使用执行的IO模型
配置 server.xml 文件当中的 修改即可。
默认配置 8.0 protocol=“HTTP/1.1” 8.0 之前是 BIO 8.0 之后是NIO
BIO
protocol=“org.apache.coyote.http11.Http11Protocol“
NIO
protocol=”org.apache.coyote.http11.Http11NioProtocol“
AIO
protocol=”org.apache.coyote.http11.Http11Nio2Protocol“
APR
protocol=”org.apache.coyote.http11.Http11AprProtocol“

BIO模型和NIO模型的区别
BIO:就是一个请求,一个线程去处理
NIO:一个线程可以处理过个请求

两者分别的模型图
BIO:BIO模型图
NIO
NIO模型图
他们模型图之间唯一的区别就是在NIO模型中多了一个IO线程(Poller)
Acceptor:用来处理我们的链接的
线程池:我们可以通过链接对象在线程池中分配线程进行读写操作
Poller:在NIO模型它是真正用来处理IO读写操作的,当客户机发送多次请求的使用,会通过Acceptor生成链接对象,然后存放在内存中的Select Key列表中,当我们想要获取某一个链接对象的时候,会通过一个selector不断的刷新select Key列表,进行轮询,查询出准备就绪的链接对象进行返回,交由我们的线程池产生链接对象进行处理。

可以从BIO模型和BIO模型的模型图可以看出,影响线程数目增多的因素是
BIO:客户端阻塞、网络延迟、业务处理慢
NIO:业务处理慢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值