1. 程式人生 > >Tomcat的效能與最大併發(1000)

Tomcat的效能與最大併發(1000)

當一個程序有500個執行緒在跑的話,那效能已經是很低很低了。Tomcat 預設配置的最大請求數是 150,也就是說同時支援 150 個併發,當然了,也可以將其改大。
當某個應用擁有 250 個以上併發的時候,應考慮應用伺服器的叢集。
具體能承載多少併發,需要看硬體的配置,CPU越多效能越高,分配給JVM的記憶體越多效能也就越高,但也會加重GC的負擔。
作業系統對於程序中的執行緒數有一定的限制:
Windows 每個程序中的執行緒數不允許超過2000
Linux 每個程序中的執行緒數不允許超過1000
另外,在Java中每開啟一個執行緒需要耗用1MB的JVM記憶體空間用於作為執行緒棧之用。
Tomcat的最大併發數是可以配置的,實際運用中,最大併發數與硬體效能和CPU數量都有很大關係的。更好的硬體,更多的處理器都會使Tomcat支援更多的併發。
Tomcat預設的HTTP實現是採用阻塞式的 Socket 通訊,每個請求都需要建立一個執行緒處理。這種模式下的併發量受到執行緒數的限制,但對於Tomcat 來說幾乎沒有BUG存在了。
Tomcat還可以配置NIO方式的Socket通訊,在效能上高於阻塞式的,每個請求也不需要建立一個執行緒進行處理,併發能力比前者高。但沒有阻塞式的成熟。
這個併發能力還與應用的邏輯密切相關,如果邏輯很複雜需要大量的計算,那併發能力勢必會下降。如果每個請求都含有很多的資料庫操作,那麼對於資料庫的效能也是非常高的。
對於單臺數據庫伺服器來說,允許客戶端的連線數量是有限制的。
併發能力問題涉及整個系統架構和業務邏輯。
系統環境不同,Tomcat版本不同、JDK版本不同、以及修改的設定引數不同。併發量的差異還是滿大的。
maxThreads="1000" 最大併發數 
minSpareThreads="100"///初始化時建立的執行緒數
maxSpareThreads="500"///一旦建立的執行緒超過這個值,Tomcat就會關閉不再需要的socket執行緒。
acceptCount="700"// 指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請求將不予處理