有關tomcat6伺服器的並發設定與最佳化
tomcat的server.xml設定檔說明:
server.conf 配置
<Connector port="8080" protocol="HTTP/1.1" maxThreads="30000" minSpareThreads="512" maxSpareThreads="2048" enableLookups="false" redirectPort="8443" acceptCount="35000" debug="0" connectionTimeout="40000" disableUploadTimeout="true" URIEncoding="UTF-8" />
參數說明:
connectionTimeout
網路連接逾時,單位:毫秒。設定為0表示永不逾時,這樣設定有隱患的。通常可設定為30000毫秒。
keepAliveTimeout
長串連最大保持時間(毫秒)。此處為15秒。
maxKeepAliveRequests
最大長串連個數(1表示禁用,-1表示不限制個數,預設100個。一般設定在100~200之間)
maxHttpHeaderSize
http 要求標頭資訊的最大程度,超過此長度的部分不予處理。一般8K。
URIEncoding
指定Tomcat 容器的URL 編碼格式。
acceptCount
指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理,預設為10個。
disableUploadTimeout
上傳時是否使用逾時機制
enableLookups
是否反查網域名稱,取值為:true 或false。為了提高處理能力,應設定為false
maxSpareThreads
最大空閑串連數,一旦建立的線程超過這個值,Tomcat 就會關閉不再需要的socket線程The default value is 50.
maxThreads
最多同時處理的串連數,Tomcat 使用線程來處理接收的每個請求。這個值表示Tomcat 可建立的最大的線程數。
minSpareThreads
最小空閑線程數,Tomcat 初始化時建立的線程數.
minProcessors
最小空閑連接線程數,用於提高系統處理效能,預設值為10。
maxProcessors
最大連接線程數,即:並發處理的最大請求數,預設值為75
TOMCAT設定檔中的APR(Apache Portable Runtime )
在server.xml檔案中的配置資訊:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SLEngine="on"/>
使用方式可參考:http://hi.baidu.com/xionglian1123/blog/item/e21877dbe89a4e2710df9b44.html
提高Tomcat的並發能力一些方法
1、Apache + Tomcat 結合起來用Apache 負責靜態頁面,Tomcat負責動態網頁面,同時減少connectionTimeout的時間,以應對並發量大線程回收來不及的情況。
2、壓力過大的問題,可以做負載平衡,一個TOMCAT無論如何也不可能擔當如此多的線程負載,而且JVM過大,其記憶體管理成本將顯著加大。2G的記憶體,做3-4個TOMCAT執行個體(512RAM*4),更為科學合理。
3、資料庫連接池,不少人,都推薦使用C3P0,能提高訪問資料庫的並發效能好幾倍。(有博文稱使用tomcat內建的jdbc-pool更好,還沒試過)
4、採用Tomcat叢集可以最大程度的發揮伺服器的效能,可以在配置較高的伺服器上部署多個Tomcat,也可以在多台伺服器上分別部署 Tomcat,Apache和Tomcat整合的方式還是JK方式。經過驗證,系統對大使用者量使用的回應程式面,Apache+3Tomccat叢集> Apache+2Tomcat叢集 > Apache整合Tomcat > 單個Tomcat。並且採用Apache+多Tomcat叢集的部署方式時,如果一個Tomcat出現宕機,系統可以繼續使用,所以在硬體系統效能足夠優越的情況下,需要盡量發揮軟體的效能,可以採用增加Tomcat叢集的方式。
5. 開啟KeepAlive支援
KeepAlive on, KeepAliveTimeout 15 MaxKeepAliveRequests 1000
根據實際經驗,通過Apache和Tomcat叢集的方式提高系統效能的效果十分明顯,這種方式可以最大化的利用硬體資源,通過多個Tomcat的處理來分擔單Tomcat時的壓力。
web server允許的最大串連數還受制於作業系統的核心參數設定,通常Windows是2000個左右,Linux是1000個左右。
Apache + Tomcat + mod_jk 部署"垂直負載平衡",可參考
http://hi.baidu.com/tzq668766/blog/item/31b6dc5bced368c29d820496.html