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"// 指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請求將不予處理
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"// 指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請求將不予處理