優化Tomcat的maxConnections、maxThreads、acceptCount三大配置
目錄
配置項
詳解:maxConnections、maxThreads、acceptCount
Tomcat的maxConnections、maxThreads、acceptCount三大配置,分別表示最大連接數,最大線程數、最大的等待數,可以通過application.yml配置文件來改變這個三個值,一個標準的示例如下:
配置項
server: tomcat: uri-encoding: UTF-8 #最大工作線程數,默認200, 4核8g內存,線程數經驗值800 #操作系統做線程之間的切換調度是有系統開銷的,所以不是越多越好。 max-threads: 1000 # 等待隊列長度,默認100 accept-count: 1000 max-connections: 20000 # 最小工作空閑線程數,默認10, 適當增大一些,以便應對突然增長的訪問量 min-spare-threads: 100 connection-timeout: 120000 # 超時時間
min-spare-threads:最小備用線程數,tomcat啟動時的初始化的線程數。
max-threads:Tomcat可創建的最大的線程數,每一個線程處理一個請求,超過這個請求數后,客戶端請求只能排隊,等有線程釋放才能處理。(建議這個配置數可以在服務器CUP核心數的200~250倍之間)
accept-count:當調用Web服務的HTTP請求數達到tomcat的最大線程數時,還有新的HTTP請求到來,這時tomcat會將該請求放在等待隊列中,這個acceptCount就是指能夠接受的最大等待數,默認100。如果等待隊列也被放滿了,這個時候再來新的請求就會被tomcat拒絕(connection refused)。
max-connections:這個參數是指在同一時間,tomcat能夠接受的最大連接數。一般這個值要大于(max-threads)+(accept-count)。
connection-timeout:最長等待時間,如果沒有數據進來,等待一段時間后斷開連接,釋放線程。
詳解:maxConnections、maxThreads、acceptCount
tomcat中maxConnections、maxThreads、acceptCount的具體含義是什么呢?參考官方文檔,對三者的含義說明如下:
一、accept-count:最大等待數
官方文檔的說明為:當所有的請求處理線程都在使用時,所能接收的連接請求的隊列的最大長度。當隊列已滿時,任何的連接請求都將被拒絕。accept-count的默認值為100。
詳細的來說:當調用HTTP請求數達到tomcat的最大線程數時,還有新的HTTP請求到來,這時tomcat會將該請求放在等待隊列中,這個acceptCount就是指能夠接受的最大等待數,默認100。如果等待隊列也被放滿了,這個時候再來新的請求就會被tomcat拒絕(connection refused)。
二、maxThreads:最大線程數
每一次HTTP請求到達Web服務,tomcat都會創建一個線程來處理該請求,那么最大線程數決定了Web服務容器可以同時處理多少個請求。maxThreads默認200,肯定建議增加。但是,增加線程是有成本的,更多的線程,不僅僅會帶來更多的線程上下文切換成本,而且意味著帶來更多的內存消耗。JVM中默認情況下在創建新線程時會分配大小為1M的線程棧,所以,更多的線程異味著需要更多的內存。線程數的經驗值為:1核2g內存為200,線程數經驗值200;4核8g內存,線程數經驗值800。
三、maxConnections:最大連接數
服務器在任何給定時間將接受和處理的最大連接數。當達到此數量時,服務器將接受但不處理另一個連接。此附加連接將被阻止,直到正在處理的連接數低于maxConnections,此時服務器將再次開始接受和處理新連接。請注意,一旦達到限制,操作系統可能仍會根據acceptCount設置接受連接。默認值為8192。
maxConnections和accept-count的關系為:當連接數達到最大值maxConnections后,系統會繼續接收連接,但不會超過acceptCount的值。
Tomcat
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。