1. 問題描述
使用者存取某張報表時,伺服器就使用一個執行緒來處理報表運算。
如果存取的人數太多且報表運算量大的話,同一時間爭搶伺服器 CPU 執行緒的人就會很多。伺服器回應能力就會減弱,所以我們需要合理控制伺服器執行緒個數。
2. 解決方法
2.1 設定方式
我們可以透過修改 Tomcat 伺服器的配置,來控制執行緒數。
開啟%Tomcat_HOME%/conf/server.xml文檔,找到<Connector port="8080"....>一欄。
在 Connector port = "8080"後面加上相應地參數控制執行緒數,控制參數如下:
參數 | 含義 | 預設值 |
---|---|---|
maxThreads | Tomcat 啟動的最大執行緒數,即同時處理的任務個數 | 200 |
acceptCount | 當 Tomcat 啟動的執行緒數達到最大時,接受佇列的請求個數 | 100 |
要調整 Tomcat 的預設最大連結數,可以增加這兩個屬性的值,並且使 acceptCount 大於等於 maxThreads,設定完成後如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" acceptCount="500" maxThreads="400" />
2.2 注意事項
Web Server 允許的最大連結數還受制於作業系統的核心參數設定,通常 Windows 是 2000 個左右,Linux 是 1000 個左右。
這裏的連結數是無法直接給出最佳配置的,需要根據您的實際情況,在不斷調整,不斷測試的基礎上,才能達到最合理配置。