Tomcat最近的几个版本为什么不使用NIO作为默认IO模型

朕的小鱼干 发布于 2016/10/26 22:35
阅读 1K+
收藏 0

Tomcat的最近几个版本 如tomcat6,tomcat7,甚至最新的tomcat8 ,在server.xml 默认的配置方式依旧是BIO模式。

依照一些参考文档,NIO的性能和默认的BIO的性能差异是巨大的。那Tomcat官方为什么还是依旧默认BIO为tomcat的默认IO模式。

加载中
0
d
dwangel

使用NIO方式处理并发性能好的前提是 每个请求耗时不能高,但是这样对现有的request response处理要有额外处理。 

如果不能达到这个要求,用 NIO反而会是整体性能下降。

现在一般的处理流程: 请求进来,查数据库,执行业务逻辑,渲染,然后返回。整体耗时很长。
所以……

d
dwangel
回复 @554330833a : 其实一般长连接 说的是持久连接,短连接是 暂时连接。前者建立后,一般程序不停,连接不断;后者 做完事情就断,比如http。
554330833a
554330833a
长连接和短连接 有什么区别?tomcat的连接 还不够长吗?
0
游客
游客
各有所长
0
netkiller-
netkiller-

我用问题回答你。

为什么Apache 性能不如Nginx , IBM使用Apache而不是Nginx, F5 设备中也是Apache,而不是Nginx ?

0
554330833a
554330833a
我也不知道,可能BIO综合更好
0
ksfzhaohui
ksfzhaohui
tomcat大多数情况下还是作为短连接使用的,如果使用长连接+bio,就得为每条连接启动一个线程,这是不允许的,而长连接+nio就不需要为每条连接启动一条线程,短连接+bio还是不错的选择
0
子修
各有所长 应用场景不一样 BIO不一定比NIO差
0
兮风古道
兮风古道

tomcat8 默认是nio的connector啊,你可以在仔细查查

0
阿信sxq
阿信sxq

不知道你在哪里看的,反正我刚才看的8.0.36是用的nio

27-Oct-2016 14:38:09.215 INFO 
[main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8088"]
27-Oct-2016 14:38:09.222 INFO 
[main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8010"]
27-Oct-2016 14:38:09.223 INFO 
[main] org.apache.catalina.startup.Catalina.start Server startup in 3581 ms



0
Ken5233
Ken5233
在windows下好像会根据实际的运行环境选择是NIO还是BIO,如果是服务器版本的话,tomcat7会自动变动NIO吧
返回顶部
顶部