Tomcat线程连接池参数优化
尤其是以下三個配置項:maxConnections、maxThreads、acceptCount。
1.4.1 Tomcat的高效配置
Tomcat的maxConnections、maxThreads、acceptCount三大配置,分別表示最大連接數,最大線程數、最大的等待數,可以通過application.yml配置文件來改變這個三個值,一個標準的示例如下:
server:tomcat:uri-encoding: UTF-8#最大工作線程數,默認200, 4核8g內存,線程數經驗值800#操作系統做線程之間的切換調度是有系統開銷的,所以不是越多越好。max-threads: 1000# 等待隊列長度,默認100accept-count: 1000max-connections: 20000# 最小工作空閑線程數,默認10, 適當增大一些,以便應對突然增長的訪問量min-spare-threads: 1001.4.2 詳解: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:最大連接數
官方文檔的說明為:
這個參數是指在同一時間,tomcat能夠接受的最大連接數。對于Java的阻塞式BIO,默認值是maxthreads的值;如果在BIO模式使用定制的Executor執行器,默認值將是執行器中maxthreads的值。對于Java 新的NIO模式,maxConnections 默認值是10000。對于windows上APR/native IO模式,maxConnections默認值為8192,這是出于性能原因,如果配置的值不是1024的倍數,maxConnections 的實際值將減少到1024的最大倍數。如果設置為-1,則禁用maxconnections功能,表示不限制tomcat容器的連接數。maxConnections和accept-count的關系為:當連接數達到最大值maxConnections后,系統會繼續接收連接,但不會超過acceptCount的值。
總結
以上是生活随笔為你收集整理的Tomcat线程连接池参数优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 力扣刷题之有序集合
- 下一篇: SpringAOP中通过JoinPoin