這是個(gè)很簡(jiǎn)單的問題,但是搜了一圈,發(fā)現(xiàn)大家都寫錯(cuò)了。所以這里總結(jié)一下:
幾乎所有的中文網(wǎng)頁都介紹,要修改Tomcat的默認(rèn)最大并發(fā)連接數(shù),應(yīng)該進(jìn)行如下設(shè)置(實(shí)際上這些步驟是錯(cuò)誤的):
--------------------------------------------
在tomcat配置文件server.xml中的<Connector ... />配置中,和連接數(shù)相關(guān)的參數(shù)有:
minProcessors
:最小空閑連接線程數(shù),用于提高系統(tǒng)處理性能,默認(rèn)值為10
maxProcessors
:最大連接線程數(shù),即:并發(fā)處理的最大請(qǐng)求數(shù),默認(rèn)值為75
acceptCount
:允許的最大連接數(shù),應(yīng)大于等于maxProcessors,默認(rèn)值為100
enableLookups
:是否反查域名,取值為:true或false。為了提高處理能力,應(yīng)設(shè)置為false
connectionTimeout
:網(wǎng)絡(luò)連接超時(shí),單位:毫秒。設(shè)置為0表示永不超時(shí),這樣設(shè)置有隱患的。通常可設(shè)置為30000毫秒。
其中和最大連接數(shù)相關(guān)的參數(shù)為maxProcessors和acceptCount。如果要加大并發(fā)連接數(shù),應(yīng)同時(shí)加大這兩個(gè)參數(shù)。
web server允許的最大連接數(shù)還受制于操作系統(tǒng)的內(nèi)核參數(shù)設(shè)置,通常Windows是2000個(gè)左右,Linux是1000個(gè)左右。Unix中如何設(shè)置這些參數(shù),請(qǐng)參閱Unix常用監(jiān)控和管理命令
具體的配置信息:
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"/>
?
--------------------------------------------
但是我仔細(xì)查了一圈,發(fā)現(xiàn)這個(gè)說法只是以訛傳訛,并不適用于Tomcat 5.5以上的版本。這里先教大家怎么去查Tomcat的官網(wǎng):
首先,在這里: http://tomcat.apache.org/ ?我們點(diǎn)擊左側(cè)導(dǎo)航欄中“Documentation”下的Tomcat 7.0,進(jìn)入到這個(gè)鏈接中: http://tomcat.apache.org/tomcat-7.0-doc/index.html ?,詳細(xì)的信息我們不用都看,在左側(cè)導(dǎo)航欄中有一個(gè)鏈接 Configuration ,我們點(diǎn)進(jìn)去之后,再點(diǎn)擊其左側(cè)導(dǎo)航欄中connector一項(xiàng)的 HTTP ,就進(jìn)入到HTTP連接數(shù)及其他相關(guān)屬性的設(shè)置頁面了。在這里( http://tomcat.apache.org/tomcat-7.0-doc/config/http.html )我們可以看到,在Connector的屬性配置中, 壓根 就沒有maxProcessors等的設(shè)置選項(xiàng)。其中這句話已經(jīng)介紹得很清楚:
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).
所以我們需要設(shè)置的是maxThreads和acceptCount這兩個(gè)值:
其中,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.
所以兩者的默認(rèn)值分別是200和100,要調(diào)整Tomcat的默認(rèn)最大連接數(shù),可以增加這兩個(gè)屬性的值,并且使acceptCount大于等于maxThreads:
?
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" acceptCount="500" maxThreads="400" />
今天就記錄這么多,希望大家以后在轉(zhuǎn)載別人的經(jīng)驗(yàn)時(shí)更用心些,不要老出現(xiàn)上面那些以訛傳訛的情況。也希望能對(duì)有些朋友起到幫助。
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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