Tomcat 7最大併發連接數的正確修改方法

轉載出處:http://www.linuxidc.com/Linux/2013-09/90332.htm


幾乎所有的中文網頁都介紹,要修改Tomcat的默認最大併發連接數,應該進行如下設置(實際上這些步驟是錯誤的):

--------------------------------------------

在tomcat配置文件server.xml中的<Connector ... />配置中,和連接數相關的參數有:
  
minProcessors:最小空閒連接線程數,用於提高系統處理性能,默認值爲10
maxProcessors:最大連接線程數,即:併發處理的最大請求數,默認值爲75
acceptCount:允許的最大連接數,應大於等於maxProcessors,默認值爲100
enableLookups:是否反查域名,取值爲:true或false。爲了提高處理能力,應設置爲false
connectionTimeout:網絡連接超時,單位:毫秒。設置爲0表示永不超時,這樣設置有隱患的。通常可設置爲30000毫秒。
其中和最大連接數相關的參數爲maxProcessors和acceptCount。如果要加大併發連接數,應同時加大這兩個參數。
web server允許的最大連接數還受制於操作系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右。Unix中如何設置這些參數,請參閱Unix常用監控和管理命令

具體的配置信息:
Java代碼
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080"
minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000 " useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

--------------------------------------------

但是我仔細查了一圈,發現這個說法只是以訛傳訛,並不適用於Tomcat 5.5以上的版本。這裏先教大家怎麼去查Tomcat的官網:

首先,在這裏:http://tomcat.apache.org/ 我們點擊左側導航欄中“Documentation”下的Tomcat 7.0,進入到這個鏈接中:http://tomcat.apache.org/tomcat-7.0-doc/index.html ,詳細的信息我們不用都看,在左側導航欄中有一個鏈接Configuration,我們點進去之後,再點擊其左側導航欄中connector一項的HTTP,就進入到HTTP連接數及其他相關屬性的設置頁面了。在這裏(http://tomcat.apache.org/tomcat-7.0-doc/config/http.html)我們可以看到,在Connector的屬性配置中,壓根就沒有maxProcessors等的設置選項。其中這句話已經介紹得很清楚:

If more simultaneous requests are received than can be handled by the currently available request processing threads, additional threads will be created up to the configured maximum (the value of the maxThreads attribute). If still more simultaneous requests are received, they are stacked up inside the server socket created by the Connector, up to the configured maximum (the value of the acceptCount attribute).

所以我們需要設置的是maxThreads和acceptCount這兩個值:

其中,maxThreads的介紹如下:

The maximum number of request processing threads to be created by this Connector, which therefore determines the maximum number of simultaneous requests that can be handled. If not specified, this attribute is set to 200. If an executor is associated with this connector, this attribute is ignored as the connector will execute tasks using the executor rather than an internal thread pool.

而acceptCount的介紹爲:

The maximum queue length for incoming connection requests when all possible request processing threads are in use. Any requests received when the queue is full will be refused. The default value is 100.

所以兩者的默認值分別是200和100,要調整Tomcat的默認最大連接數,可以增加這兩個屬性的值,並且使acceptCount大於等於maxThreads:

    <Connector port="8080" protocol="HTTP/1.1" 
              connectionTimeout="20000" 
              redirectPort="8443" acceptCount="500" maxThreads="400" />

今天就記錄這麼多,希望大家以後在轉載別人的經驗時更用心些,不要老出現上面那些以訛傳訛的情況。也希望能對有些朋友起到幫助。

相關閱讀:

Linux下Apache與多個Tomcat 集羣負載均衡 http://www.linuxidc.com/Linux/2012-01/51731.htm

Nginx Tomcat 集羣負載均衡解決筆記 http://www.linuxidc.com/Linux/2013-07/86827.htm

實例詳解Tomcat組件安裝+Nginx反向代理Tomcat+Apache使用mod_jk和mod_proxy反向代理和負載均衡 http://www.linuxidc.com/Linux/2013-06/85290.htm

Apache+Tomcat 環境搭建(JK部署過程) http://www.linuxidc.com/Linux/2012-11/74474.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章