tomcat的性能與最大并發(1000)

LillyLindru 8年前發布 | 43K 次閱讀 Tomcat 應用服務器

來自: http://blog.chinaunix.net/uid-7374279-id-4470247.html


當一個進程有 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"http:///初始化時創建的線程數
maxSpareThreads="500"http:///一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。
acceptCount="700"http:// 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理

 本文由用戶 LillyLindru 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!