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
總結
以上是生活随笔為你收集整理的Tomcat的默认连接器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javaone_JavaOne正在重建动
- 下一篇: 麒麟9000和麒麟990区别(麒麟900