tomcat默認最大連接數與調整的方法示例
一般來說我們都是用tomcat默認的配置做基礎的本地開發,測試及生產肯定不用tomcat啦,正式一點的企業肯定換大型容器了,當然不排除還是用tomcat或者它的集群的,言歸正傳,tomcat的連接數相關配置及修改干貨如下:
在tomcat配置文件server.xml中的<Connector />標簽配置中,和連接數相關的參數有下面幾個(如果你現在看肯定都沒有的):
- minProcessors------------------最小空閑連接線程數,用于提高系統處理性能,默認值為10
- maxProcessors-----------------最大連接線程數,即:并發處理的最大請求數,默認值為75
- acceptCount---------------------允許的最大連接數,應大于等于maxProcessors,默認值為100
- enableLookups-----------------是否反查域名,取值為:true或false。為了提高處理能力,應設置為false
- connectionTimeout------------網絡連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。
P.S.如果你要手動增加這些鏈接相關參數,那么根據以上參數肯定是找不到的,官方文檔提示需要搞另外兩個參數才能加大并發連接數,那就是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).
如果接收到的并發請求比當前可用的請求處理線程所能處理的更多,則將創建額外的線程到配置的最大值(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).
如果接收到更多的并發請求,則它們被堆疊在由連接器創建的服務器套接字內,直到配置的最大值(acceptCount 屬性)。
所以需要設置的是maxThreads和acceptCount這兩個值,兩者的默認值分別是200和100,要調整Tomcat的默認最大連接數,可以增加這兩個屬性的值,并且使acceptCount大于等于maxThreads:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" acceptCount="300" maxThreads="200" />
并發請求數 <= tomcat最大線程數200,可以看到200個請求,響應結果正常
并發數(201) >tomcat最大線程數200.可以看到,因為tomcat最大的線程數為200,201的并發請求量,超出了并發處理的數量200,多出來的1個請求,需要等待某個處理中的請求處理完成
請求數超過最大連接數300,可以看到有大量的沒有正常響應的http請求,原因很簡單,因為超過了tomcat設置的最大連接數,服務器拒絕了該次請求的連接
增加線程是有成本的,JVM中默認情況下在創建新線程時會分配大小為1M的線程棧,所以更多的線程異味著更多的內存;
更多的線程會帶來更多的線程上下文切換成本。
springboot中Tomcat配置建議:
最大工作線程數 ,默認200(4核8G內存,線程數經驗值為800,操作系統之間做線程之間切換調度是有開銷的,不是越多越好),最大連接數默認是10000,等待長度默認為100,最小工作空閑線程默認10
線程數的經驗值為:1核2G內存, 線程數經驗值為200,;4核8G內存,線程數經驗值為800
到此這篇關于tomcat默認最大連接數與調整的方法示例的文章就介紹到這了,更多相關tomcat默認最大連接數內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!
