Tomcat併發優化和快取優化

2021-08-14 17:16:48 字數 2124 閱讀 4822

在tomcat 配置檔案 server.xml 中的 配置中

maxthreads  客戶請求最大執行緒數

minsparethreads    tomcat初始化時建立的 socket 執行緒數

maxsparethreads   tomcat聯結器的最大空閒 socket 執行緒數

minprocessors:最小空閒連線線程數,用於提高系統處理效能,預設值為 10

maxprocessors:最大連線線程數,即:併發處理的最大請求數,預設值為 75

acceptcount:允許的最大連線數,應大於等於 maxprocessors ,預設值為 100

enablelookups:是否反查網域名稱,取值為: true 或 false 。為了提高處理能力,應設定為 false

redirectport        在需要基於安全通道的場合,把客戶請求**到基於ssl 的 redirectport 埠

acceptaccount       監聽埠佇列最大數,滿了之後客戶請求會被拒絕(不能小於maxsparethreads  )

connectiontimeout:網路連線超時,單位:毫秒。設定為 0 表示永不超時,這樣設定有隱患的。通常可設定為30000 毫秒。

uriencoding    url統一編碼

其中和最大連線數相關的引數為maxprocessors 和 acceptcount 。如果要加大併發連線數,應同時加大這兩個引數。

web server允許的最大連線數還受制於作業系統的核心引數設定,通常 windows 是 2000 個左右, linux 是1000 個左右。

2.tomcat中的配置示例

tomcate -->config --> server.xml

其中最後兩個引數意義如下:

maxthreads:tomcat起動的最大執行緒數,即同時處理的任務個數,預設值為200

acceptcount:當tomcat起動的執行緒數達到最大時,接受排隊的請求個數,預設值為100

這兩個值如何起作用,請看下面三種情況

情況1:接受乙個請求,此時tomcat起動的執行緒數沒有到達maxthreads,tomcat會起動乙個執行緒來處理此請求。

情況2:接受乙個請求,此時tomcat起動的執行緒數已經到達maxthreads,tomcat會把此請求放入等待佇列,等待空閒執行緒。

情況3:接受乙個請求,此時tomcat起動的執行緒數已經到達maxthreads,等待佇列中的請求個數也達到了acceptcount,此時tomcat會直接拒絕此次請求,返回connection refused

maxthreads

如何配置

一般的伺服器操作都包括量方面:1計算(主要消耗cpu),2等待(io、資料庫等)

第一種極端情況,如果我們的操作是純粹的計算,那麼系統響應時間的主要限制就是cpu的運算能力,此時maxthreads應該盡量設的小,降低同一時間內爭搶cpu的執行緒個數,可以提高計算效率,提高系統的整體處理能力。

我在測試時遇到乙個問題,maxthreads我設定的比較大比如3000,當服務的執行緒數大到一定程度時,一般是2000出頭,單次請求的響應時間就會急劇的增加,

cpu把大多數時間都用來在這2000多個執行緒直接切換上了,當然cpu就沒有時間來處理我們的程式了。

以前一直簡單的認為多執行緒=高效率。。其實多執行緒本身並不能提高cpu效率,執行緒過多反而會降低cpu效率。

當cpu核心數《執行緒數時,cpu就需要在多個執行緒直接來回切換,以保證每個執行緒都會獲得cpu時間,即通常我們說的併發執行。

所以maxthreads的配置絕對不是越大越好。

現實應用中,我們的操作都會包含以上兩種型別(計算、等待),所以maxthreads的配置並沒有乙個最優值,一定要根據具體情況來配置。

最好的做法是:在不斷測試的基礎上,不斷調整、優化,才能得到最合理的配置。

acceptcount的配置,我一般是設定的跟maxthreads一樣大,這個值應該是主要根據應用的訪問峰值與平均值來權衡配置的。

如果設的較小,可以保證接受的請求較快相應,但是超出的請求可能就直接被拒絕

如果設的較大,可能就會出現大量的請求超時的情況,因為我們系統的處理能力是一定的。

maxthreads 配置要結合 jvm -xmx 引數調整,也就是要考慮記憶體開銷。

Tomcat併發優化和快取優化

往期精選 架構師高併發高效能分布式教程 4000g 兩套大型電商實戰專案 在tomcat 配置檔案 server.xml 中的 配置中 maxthreads 客戶請求最大執行緒數 minsparethreads tomcat初始化時建立的 socket 執行緒數 maxsparethreads to...

Tomcat併發優化

在 tomcat 配置檔案 server.xml maxthreads tomcat 使用執行緒來處理接收的每個請求。這個值表示 tomcat 可建立的最大的執行緒數。預設值 150。acceptcount 指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請...

tomcat 高併發優化

acceptcount 5000 maxthreads tomcat起動的最大執行緒數,即同時處理的任務個數,預設值為200minsparethreads 表示空閒的執行緒數,據我的理解,類似於連線池acceptcount 當tomcat起動的執行緒數達到最大時,接受排隊的請求個數,預設值為100 ...