首页 > 处理一个web请求涉及很多数据库查询,那么将Tomcat配置成NIO线程模型会不会反而降低并发能力?

处理一个web请求涉及很多数据库查询,那么将Tomcat配置成NIO线程模型会不会反而降低并发能力?

数据库查询会阻塞当前NIO线程,那么这个NIO线程在此期间就无法处理其它请求,造成了CPU浪费。这样的话是不是还不如BIO模型并发能力好?


题主可能搞混了NIO与BIO的区别。可以看一下这篇文章JAVANIO
无论是在NIO还是BIO,在处理这个业务逻辑的时候都不能处理其他的业务逻辑。
题主咋想的。。


数据库的查询阻塞和 Tomcat 的 NIO/BIO 配置没有关系。可以认为大量数据库查询阻塞的是当前请求的业务处理线程,造成的问题是服务器对于请求的事务处理时间长、响应慢。但应用服务器接收其他请求并处理的能力还是在的,这个时候其他线程在服务器总资源(包括数据库资源)满足情况下不会受题主假设的该阻塞线程影响。

当然,如果并发高,类似的请求造成堆积的话会对系统造成很大影响。不过,就此题而言,这些和题主考虑的 NIO、BIO 关系不大。我认为,此题中 BIO 并不会比 NIO 表现出色。


这两个应该不是一回事,你的请求涉及到很多数据库查询,那就应该通过提供缓存等来加快查询的速度。

【热门文章】
【热门文章】