Tomcat的BIO和NIO问题

本文探讨了在Tomcat中将BIO模式改为NIO模式对服务器吞吐量的影响。NIO虽在网络I/O上实现异步,但若业务线程池未异步化,整体吞吐量提升有限。NIO模式在处理大量长连接时更具优势,适合CPU利用率较低的情况,而BIO模式在增加线程数后可能导致接收连接受限。压测时通常使用长连接,NIO模式能更好地利用CPU资源,但在已满CPU的情况下,优化代码更为重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近一些朋友通过书籍找到我,问了一些关于tomcat中BIO和NIO的问题,这里列一下方便需要的朋友。后续也将前面有朋友问的问题整理下。。

只把 Tomcat 的 bio 模式改为 nio 模式,是否能提高服务器的吞吐量?发现在配置一样的情况下,两种模式压出来的吞吐量差不多。

要看你系统是不是整个都异步化了,因为tomcat的nio只是将网络io异步化了,就是接收和读写异步化了,但是网络报文接受完后还是要交给业务线程池,如果你的业务是阻塞或者说较耗时的话是没办法提升你整个的吞吐量的,除非将整个项目都异步化,现在压起来如果你的cpu如果还打满的话就可以继续优化,但如果bio都能打满cpu就说明已经到物理极限了,没啥好优化的了,只能在代码层去优化了。

在做tomcat nio 模式压测时发现并发量大时,一开始接收不了请求,到后面才慢慢恢复,这是什么导致的?

应该不会接收不了,只是接收不过来,nio的接受线程一般是cpu数,一下很多请求可能需要一些时间来接收。

后来又能慢慢稳定,tps能够上去是什么是情况?

因为长连接,接收工作只做一次。

对比与 nio ,bio 一开始能接收的量比 nio 大,怎么解释?

bio接收是线程池里面的线程接收的,也就是说你的线程池如果设为600,就有60

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超人汪小建(seaboat)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值