問題:Tomcat線程數是否是越大越好呢?java
答案確定是否認的。數據庫
Tomcat的處理速度跟線程數不是徹底成正比的,設置不恰當會出現相反的效果。服務的負載計算包括了CPU的使用率和資源等待。tomcat
第一種狀況,資源等待比較少,那麼系統響應時間就是限制在CPU的計算上面了。測試
這時候線程數應該設置小一點,下降同一時間爭搶CPU的線程數,能夠提升線程效率,從而提高系統的處理能力。優化
第二種狀況,資源等待比較多,好比文件的讀寫或者請求數據庫等。spa
這時候線程數就要增長一些,這樣子才能提升處理的請求個數,從而提升系統的處理能力。線程
現實,當線程比較多的時候,cpu在線程切換時消耗的時間隨着線程數量的增長愈來愈大,從而致使系統的處理能力下降。資源
connectionTimeout="30000"虛擬機
redirectPort="8443"io
maxThreads="600" acceptCount="800"/>
maxThreads:tomcat起動的最大線程數,即同時處理的任務個數,默認值爲200
acceptCount:當tomcat起動的線程數達到最大時,接受排隊的請求個數,默認值爲100
acceptCount通常跟maxThreads設置差很少大就能夠了,具體仍是須要看訪問高峯期,排隊的請求是否多,是否會出現timeout請求比較多,進行對應的調整。
總結
所以,線程數沒有固定的值,須要經過不斷地測試和調整、優化才能找到最適合的值。
若是設的太小,能夠保證接收的請求較快相應,可是處理的同時處理的請求個數有限,超過的請求可能就直接被拒絕了。
若是設的過大,就會出現大量超時的現象,也有可能出現java虛擬機資源不夠用 ,或者系統文件句柄不夠用的狀況。
一個tomcat處理不過來咱們能夠多開幾個啊!大家以爲呢?