Tomcat在Debian上的性能瓶頸破解方法
server.xml
中配置示例:<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443" />
server.xml
中配置HTTPS連接器時添加protocol="org.apache.coyote.http2.Http2Protocol"
。maxConnections
(最大連接數,默認10000,可根據服務器資源調整)、connectionTimeout
(連接超時時間,默認20秒,避免過長占用資源)、acceptCount
(等待隊列大小,默認100,隊列過長會導致請求被拒絕)。server.xml
中定義Executor
并關聯到Connector
:<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" maxQueueSize="100" />
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
maxThreads
(最大線程數)根據CPU核心數調整(如4核CPU可設為200-400),minSpareThreads
(最小空閑線程數)保持50-100以快速響應新請求。-Xms
)和最大堆(-Xmx
),避免頻繁擴容。例如:export CATALINA_OPTS="-Xms2g -Xmx4g"
(初始2GB,最大4GB)。export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseG1GC"
。export CATALINA_OPTS="$CATALINA_OPTS -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g"
。net.core.wmem_max
)、調整SYN隊列長度(net.ipv4.tcp_max_syn_backlog
),提升并發連接處理能力。修改/etc/sysctl.conf
后執行sysctl -p
生效。/etc/security/limits.conf
添加:* soft nofile 65535
* hard nofile 65535
(用戶軟/硬限制設為65535)。compression
屬性開啟gzip壓縮,減少網絡傳輸數據量。在server.xml
的Connector
中添加:compression="on"
compressionMinSize="2048"
(最小壓縮大小,單位字節)compressableMimeType="text/html,text/xml,text/plain,application/json"
(需要壓縮的MIME類型)。server.xml
的Connector
中設置enableLookups="false"
,避免Tomcat對客戶端IP進行DNS反向解析(消耗網絡資源)。