tomcat的accept-count、max-connections、max-threads三個參數的含義
tomcat的accept-count、max-connections、max-threads三個參數的含義
max-connections:最大連接數
最大連接數是指,同一時刻,能夠連接的最大請求數
需要注意的是,能夠連接并不代表可以立即處理,可以立即處理請求的受最大線程數的控制
accept-count:最大等待數
最大等待數是指,當請求到達最大連接數時,還有新的請求會放在等待隊列中,等待隊列最大值為最大等待數
最大等待數類似JDK線程池的阻塞隊列,隊列里的任務要等前面的任務執行完才會被執行
需要注意是,最大等待數前面的請求,也就是最大連接數內的請求,也不會全部都立即處理,立即處理的只有最大線程數個請求
多余最大連接數+最大等待數的請求,將會直接被拒絕
max-threads:最大線程數
最大線程數是指,可以同時處理的最大請求數
最大線程數并不會控制請求數,這與JDK的線程池有些區別,JKD線程池最多保留最大線程數+阻塞隊列個任務,再多余的就要執行拒絕策略。而這里的最大線程數表示的是一種同時處理的能力,被動的接受并處理給過來的請求
可接受的請求數是由最大連接數+最大等待數控制的
總結
- tomcat同一時間最多可以接受最大連接數+最大等待數個請求,多余的請求將會被拒絕
- 最大線程數決定了同時處理的請求數,因此可能會有部分請求不會被立即處理,但并不表示該請求被拒絕了
- 最大等待數中的請求不會被立即處理,最大連接數中的任務也不是所有的請求都會被立即處理,因為立即執行的請求只有最大線程數個
類比生活中的例子
去火鍋店吃火鍋
最大連接數:店里有座位,前面的人可以到店里坐下點餐
最大等待數:店里沒位置時,可以在門口進行排號,排號到一定數量時,后面的顧客將被通知無法進店用餐
最大線程數:店里服務員進行上菜,第一時間吃上菜的顧客數就是服務員的個數。所以并不是每個人都能在第一時間吃上菜
參考
https://blog.csdn.net/sgy86/article/details/113926546