Tomcat與 BIO / NIO
阿新 • • 發佈:2019-01-22
當一個程序有500個執行緒在跑的話,那麼效能已經很低了,Tomcat預設配置的最大請求數是150,也就是最大隻能支援150的併發,當某個應用達到250個以上併發,就需要考慮叢集,但是說具體能承載多少,需要看硬體設施
作業系統對程序的執行緒數也有一定限制: windows為一個程序2000個執行緒 linux為一個程序1000個執行緒
而且在Java中每開啟一個執行緒,就需要耗用1MB的JVM記憶體空間,用以開闢執行緒棧資訊
且說 Tomcat,Tomcat預設的HTTP實現是採用阻塞式的Socket通訊(Tomcat7以及一下版本,Tomcat7之後採用的預設NIO,大幅度的提高伺服器的處理和響應效能),每個請求都需要建立一個執行緒進行處理,這種模式下的併發量受到執行緒數量的限制,但對於Tomcat來說幾乎沒有BUG(但是7之後對NIO來說也是很好)
Tomcat還可以配置使用NIO的方式的Socket通訊,在效能上高於阻塞式的,每個請求也不用額外建立一個新執行緒進行處理,併發能力能BIO強,但是在當時沒有阻塞式的成熟
IO的socket通訊主要的處理關鍵點是事件中的I/O操作,BIO可以採用執行緒池的方式,以多執行緒去解決,但是NIO的多執行緒實現起來較為麻煩,需要考慮很多因素,如TCP/IP協議裡的包規定等,所以我們常使用Netty這一先已封裝好的框架