優化Ubuntu Tomcat響應時間的多維度策略
server.xml
調整線程池參數,maxThreads
(最大線程數)需結合CPU核心數(如4核可設為8-16)和內存大小設置,避免過多線程導致CPU爭搶;minSpareThreads
(最小空閑線程數)保持默認(通常10)即可,acceptCount
(連接隊列長度)可適當增加(如從100調至200),防止高負載時拒絕請求。org.apache.coyote.http11.Http11NioProtocol
協議提升非阻塞I/O性能;開啟HTTP壓縮(compression="on"
),設置compressionMinSize="2048"
(壓縮閾值)和compressableMimeType
(包含text/html
、application/json
等文本類型),減少網絡傳輸量。enableLookups="false"
),避免Tomcat每次請求都進行DNS解析;清理webapps
目錄中未使用的WAR包或目錄,減少啟動時間和資源占用。-Xms
(初始堆)和-Xmx
(最大堆)參數分配合理內存(如-Xms512m -Xmx1024m
),避免頻繁垃圾回收(Full GC)導致的響應延遲;JDK 8及以上版本無需設置永久代參數(-XX:PermSize
/-XX:MaxPermSize
),改用-XX:MetaspaceSize
和-XX:MaxMetaspaceSize
(如各256m)。-XX:+UseG1GC
),適合大堆內存(如超過4GB)和高并發場景,能平衡吞吐量和暫停時間;若應用對延遲敏感,可調整G1的-XX:MaxGCPauseMillis
(目標最大暫停時間,默認200ms)參數。-XX:NewRatio=2
,新生代占1/3),優化對象晉升流程;增加并行GC線程數(-XX:ParallelGCThreads=4
,與CPU核心數一致),提升垃圾回收效率。/etc/security/limits.conf
,添加* soft nofile 65535
和* hard nofile 65535
(用戶軟/硬限制),解決Tomcat高并發時“Too many open files”問題;修改/etc/pam.d/common-session
和/etc/pam.d/common-session-noninteractive
,添加session required pam_limits.so
使設置生效。sysctl
命令優化TCP連接:net.ipv4.tcp_tw_reuse=1
(復用TIME_WAIT連接)、net.ipv4.tcp_max_syn_backlog=4096
(增加半連接隊列)、net.core.somaxconn=4096
(增加系統最大連接數);將上述命令添加到/etc/sysctl.conf
,執行sysctl -p
使配置永久生效。maxPoolSize
(如與Tomcat線程數匹配)和idleTimeout
(空閑連接超時時間),減少連接創建和銷毀開銷;優化SQL語句(避免SELECT *
、添加索引、使用覆蓋索引),通過EXPLAIN
分析查詢執行計劃,確保查詢效率。web.xml
中配置靜態資源緩存(如<cache-mapping>
設置max-age=3600
),減少重復請求。jstat -gcutil <pid> 1000
命令實時查看GC情況。logging.properties
中的java.util.logging.ConsoleHandler.level
設為WARNING
),減少不必要的日志輸出;使用logrotate
工具定期輪轉日志(如每天一個文件),避免日志文件過大占用磁盤空間。