這是個很簡單的問題,但是搜了一圈,發現大家都寫錯了。所以這里總結一下:
幾乎所有的中文網頁都介紹,要修改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" />
今天就記錄這么多,希望大家以后在轉載別人的經驗時更用心些,不要老出現上面那些以訛傳訛的情況。也希望能對有些朋友起到幫助。
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
