1. 程式人生 > >Tomcat的配置最大併發連線數

Tomcat的配置最大併發連線數

幾乎所有的中文網頁都介紹,要修改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的官網:

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" />

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

相關閱讀: