注:內容來源于我本人的微信公眾號:碼農歷險技
有些spring boot項目平時的流量涌入比較大的,或者是當有活動的時候在活動那幾天涌入的流量也是很大的,這時候如果不對我們項目的線程數進行相應的調優就會導致我們項目的TPS、QPS上不去,這時候就要把Tomcat的線程數進行相應的調優。
一.服務端如何查看有多少個線程數量
- 首先我們輸入ps -ef | grep JAVA命令查看所有的java進程。
- 從第1步驟找到你想要的進程號,輸入命令:pstree -p 進程號,這個命令可以列出該進程的所有線程出來。
- 除了2個步驟也可以直接統計出線程的數量,輸入命令:pstree -p 進程號 | wc -l,直接算出線程的總數過來。
二.tomcat默認配置
spring boot的關于tomcat的配置在spring-configuration-metadata.json文件中,并且以server.tomcat開頭。
默認內嵌的tomcat配置有:
- 等待隊列的長度:server.tomcat.accept-count,默認為100
b. 最大可被連接數:server.tomcat.max-connections,默認為10000
c. 最大工作線程數:server.tomcat.max-threads,默認為200
d. 最小工作線程數:server.tomcat.min-spare-threads,默認為10
根據以上的默認配置,線程連接超過10000以后出現拒絕連接的情況,觸發的請求超過200+100后拒絕連接。
三.如何修改tomcat配置
說實話,這種答案是不固定的,不同的服務器對象的最佳線程數是不固定的,要測試人員在Jmeter或Apache ab通過不斷的參數設置找到最高的那個拐點,舉個例子,我們項目組所用的是4核8G的服務器,對于4核8G的服務器來說最大的拐點在七八百左右,我們項目組設置是780。
以4核8G的服務器為例,我設置等待隊列的長度為1000,最大工作線程數為780,最小工作線程數為100。
四.總結
上面的tomcat線程數調優只是一個例子,數據不能用作參考,實際的工作中還要經過不斷的數據測試來尋找到最高的拐點出來。