tomcat默認(rèn)最大連接數(shù)與調(diào)整的方法示例
一般來說我們都是用tomcat默認(rèn)的配置做基礎(chǔ)的本地開發(fā),測試及生產(chǎn)肯定不用tomcat啦,正式一點的企業(yè)肯定換大型容器了,當(dāng)然不排除還是用tomcat或者它的集群的,言歸正傳,tomcat的連接數(shù)相關(guān)配置及修改干貨如下:
在tomcat配置文件server.xml中的<Connector />標(biāo)簽配置中,和連接數(shù)相關(guān)的參數(shù)有下面幾個(如果你現(xiàn)在看肯定都沒有的):
- minProcessors------------------最小空閑連接線程數(shù),用于提高系統(tǒng)處理性能,默認(rèn)值為10
- maxProcessors-----------------最大連接線程數(shù),即:并發(fā)處理的最大請求數(shù),默認(rèn)值為75
- acceptCount---------------------允許的最大連接數(shù),應(yīng)大于等于maxProcessors,默認(rèn)值為100
- enableLookups-----------------是否反查域名,取值為:true或false。為了提高處理能力,應(yīng)設(shè)置為false
- connectionTimeout------------網(wǎng)絡(luò)連接超時,單位:毫秒。設(shè)置為0表示永不超時,這樣設(shè)置有隱患的。通常可設(shè)置為30000毫秒。
P.S.如果你要手動增加這些鏈接相關(guān)參數(shù),那么根據(jù)以上參數(shù)肯定是找不到的,官方文檔提示需要搞另外兩個參數(shù)才能加大并發(fā)連接數(shù),那就是maxProcessors和acceptCount。
官方原話及翻譯:
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).
如果接收到的并發(fā)請求比當(dāng)前可用的請求處理線程所能處理的更多,則將創(chuàng)建額外的線程到配置的最大值(maxThreads 屬性)。
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).
如果接收到更多的并發(fā)請求,則它們被堆疊在由連接器創(chuàng)建的服務(wù)器套接字內(nèi),直到配置的最大值(acceptCount 屬性)。
所以需要設(shè)置的是maxThreads和acceptCount這兩個值,兩者的默認(rèn)值分別是200和100,要調(diào)整Tomcat的默認(rèn)最大連接數(shù),可以增加這兩個屬性的值,并且使acceptCount大于等于maxThreads:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" acceptCount="300" maxThreads="200" />
并發(fā)請求數(shù) <= tomcat最大線程數(shù)200,可以看到200個請求,響應(yīng)結(jié)果正常
并發(fā)數(shù)(201) >tomcat最大線程數(shù)200.可以看到,因為tomcat最大的線程數(shù)為200,201的并發(fā)請求量,超出了并發(fā)處理的數(shù)量200,多出來的1個請求,需要等待某個處理中的請求處理完成
請求數(shù)超過最大連接數(shù)300,可以看到有大量的沒有正常響應(yīng)的http請求,原因很簡單,因為超過了tomcat設(shè)置的最大連接數(shù),服務(wù)器拒絕了該次請求的連接
增加線程是有成本的,JVM中默認(rèn)情況下在創(chuàng)建新線程時會分配大小為1M的線程棧,所以更多的線程異味著更多的內(nèi)存;
更多的線程會帶來更多的線程上下文切換成本。
springboot中Tomcat配置建議:
最大工作線程數(shù) ,默認(rèn)200(4核8G內(nèi)存,線程數(shù)經(jīng)驗值為800,操作系統(tǒng)之間做線程之間切換調(diào)度是有開銷的,不是越多越好),最大連接數(shù)默認(rèn)是10000,等待長度默認(rèn)為100,最小工作空閑線程默認(rèn)10
線程數(shù)的經(jīng)驗值為:1核2G內(nèi)存, 線程數(shù)經(jīng)驗值為200,;4核8G內(nèi)存,線程數(shù)經(jīng)驗值為800
到此這篇關(guān)于tomcat默認(rèn)最大連接數(shù)與調(diào)整的方法示例的文章就介紹到這了,更多相關(guān)tomcat默認(rèn)最大連接數(shù)內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。