1. 準備測試環境
在CentOS系統上確認Tomcat已正常啟動(通過systemctl status tomcat查看狀態),并部署待測試的Web應用(如將war包放入webapps目錄并解壓)。測試應用需覆蓋核心業務場景(如靜態資源訪問、動態接口調用),確保測試結果貼合實際使用情況。
2. 選擇性能測試工具
根據測試需求選擇合適的工具:
3. 執行性能測試
Apache JMeter:
創建測試計劃,添加線程組(設置并發用戶數、循環次數,如100個用戶、循環10次)、HTTP請求(輸入Tomcat應用URL,如http://localhost:8080/user/list)、監聽器(如“查看結果樹”“聚合報告”,用于查看響應時間、吞吐量等指標)。通過Run > Start啟動測試,生成詳細的性能報告。
Apache Bench (ab):
在終端執行命令,例如測試1000個總請求、10個并發:ab -n 1000 -c 10 http://localhost:8080/。命令執行后,輸出結果包含Requests per second(吞吐量,每秒處理的請求數)、Time per request(平均響應時間,單位毫秒)、Percentage of the requests served within a certain time(響應時間分布,如90%的請求在50ms內完成)。
wrk:
使用異步IO模型進行高并發測試,例如模擬12個線程、100個并發連接、持續30秒:wrk -t12 -c100 -d30s http://localhost:8080/。命令輸出包含Requests/sec(吞吐量)、Latency(延遲,平均、最大、最小響應時間)等信息,適合評估Tomcat在高并發下的穩定性。
4. 監控系統資源與Tomcat指標
測試過程中需同步監控系統資源(CPU、內存、磁盤I/O)及Tomcat內部指標,定位性能瓶頸:
top(查看CPU、內存占用)、free -m(查看內存使用情況)、df -h(查看磁盤空間)命令,或通過Grafana+Prometheus組合實現可視化監控(需提前安裝并配置Prometheus的Tomcat Exporter);catalina.sh添加-Dcom.sun.management.jmxremote等配置,使用jconsole或VisualVM連接),查看線程池狀態(活躍線程數、隊列長度)、內存使用(堆內存、GC頻率)、連接器性能(請求處理時間、吞吐量)等指標。5. 分析測試結果與優化方向
根據測試結果定位性能瓶頸,常見優化方向包括:
maxThreads(默認200),且響應時間增長,可適當增大maxThreads(如調整為500),但需避免設置過大導致內存溢出;-Xmx最大堆,如-Xms2g -Xmx4g),選擇合適的垃圾回收器(如G1GC,-XX:+UseG1GC),減少GC停頓時間;protocol="org.apache.coyote.http11.Http11NioProtocol")或NIO2(protocol="org.apache.coyote.http11.Http11Nio2Protocol"),提升并發處理能力;compression="on")、設置緩存(expires="7200"),減少傳輸數據量;