Tomcat的默认连接器

Tomcat有几个连接器可供选择。 我将把APR连接器放在一边,而将重点放在BIO和NIO上。

BIO连接器(阻塞I / O)正在阻塞–它使用线程池,每个线程在该线程池中接收请求,处理请求,响应并返回到该池。 在阻塞操作期间(例如,从数据库读取或调用外部API),线程被阻塞。

NIO连接器(非阻塞I / O) 要复杂一些 。 它使用java NIO库并在请求之间进行多路复用。 它有两个线程池–一个容纳轮询器线程,该轮询器线程处理所有传入的请求,并将这些请求推送到由另一个线程池中的工作线程处理。 两种池大小都是可配置的。

何时选择NIO与BIO取决于使用情况。 如果您大多数情况下都是常规的请求-响应用法,那么这无关紧要,甚至BIO可能也是一个更好的选择(如我之前的基准测试所示 )。 如果您有长期的连接,那么NIO是更好的选择,因为它可以为更多的并发用户提供服务,而无需为每个用户分配阻塞的线程。 轮询线程负责将数据发送回客户端,而工作线程则负责处理新请求。 换句话说,轮询器和工作线程都不会被单个用户阻止和保留。

随着异步处理servlet的引入,拥有上一段中的后一种情况变得更加容易。 也许这就是在Tomcat 8中将默认连接器从BIO切换到NIO的原因之一。记住这一点很重要,尤其是因为它们没有完全更改“默认值”。

默认值始终为“ HTTP / 1.1”,但是在Tomcat 7中“使用自动切换机制选择基于阻塞 Java的连接器或基于APR / native的连接器”,而在Tomcat 8中“使用自动切换”。选择基于非阻塞 Java NIO的连接器或基于APR /基于本机的连接器的机制”。 为了使事情变得更艰难,他们引入了NIO2连接器。 老实说,我不知道默认情况下使用两个NIO连接器之一。

因此,即使您对tomcat配置有所了解,也请记住默认值的这种更改。 (通常,我建议阅读所有属性的文档并在服务器上使用它们)

翻译自: https://www.javacodegeeks.com/2015/07/tomcats-default-connectors.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值