1. 连接器配置优化
使用高性能连接器是提升Tomcat响应时间的基础。推荐采用NIO或NIO2协议(替代传统BIO),其非阻塞特性可显著提高高并发场景下的吞吐量。在server.xml中配置示例:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
redirectPort="8443"/>
若应用需支持HTTP/2(减少页面加载时间、提升多路复用效率),可添加如下配置(Tomcat 8.5+支持):
<Connector port="8443" protocol="org.apache.coyote.http2.Http2Protocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA"/>
</SSLHostConfig>
</Connector>
同时,合理设置连接参数:maxThreads(最大并发线程数,建议500-1000,根据CPU核心数调整)、acceptCount(等待队列长度,建议500-1000,避免拒绝连接)、connectionTimeout(连接超时时间,建议20-30秒,避免长时间占用资源)。
2. 线程池配置优化
线程池是Tomcat处理请求的核心资源池。通过server.xml配置线程池,可避免线程频繁创建/销毁的开销:
<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(如800),但不超过2000;minSpareThreads:保持最小空闲线程数(如50),确保新请求能快速响应;maxQueueSize:等待队列长度(如100),避免过多请求堆积导致内存溢出。3. JVM调优
合理的JVM配置可减少垃圾回收(GC)停顿时间,提升Tomcat稳定性。关键参数如下:
-Xms(初始堆大小)和-Xmx(最大堆大小)需保持一致(如-Xms2g -Xmx2g),避免堆内存动态扩展带来的性能损耗;-XX:MetaspaceSize(初始元空间大小,如128m)和-XX:MaxMetaspaceSize(最大元空间大小,如256m),防止元空间溢出;-XX:MaxGCPauseMillis=200):export JAVA_OPTS="-Xms2g -Xmx2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
将上述配置添加到Tomcat的catalina.sh(Linux)或catalina.bat(Windows)文件中。4. 缓存策略
缓存可减少重复计算和数据库访问,提升响应速度:
ExpiresFilter或GzipFilter设置静态资源(图片、CSS、JS)的缓存时间(如1年),减少客户端请求次数。在web.xml中配置示例:<filter>
<filter-name>expiresFilter</filter-name>
<filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
<init-param>
<param-name>ExpiresByType image</param-name>
<param-value>access plus 1 year</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>expiresFilter</filter-name>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.png</url-pattern>
</filter-mapping>
5. 压缩优化
启用GZIP压缩可减小HTTP响应体大小(通常减少50%-70%),加快页面加载速度。在server.xml中配置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/plain,text/css,application/javascript,application/json"/>
compression:开启压缩(on);compressionMinSize:最小压缩大小(如2048字节,小于该值的资源不压缩);compressableMimeType:需要压缩的MIME类型(覆盖HTML、CSS、JS等静态资源)。6. 操作系统调优
调整Linux内核参数可提升Tomcat的网络处理能力和并发性能:
net.ipv4.tcp_tw_reuse=1;net.core.somaxconn(如4096),避免连接被拒绝;net.ipv4.tcp_rmem(接收缓冲区)和net.ipv4.tcp_wmem(发送缓冲区),如net.ipv4.tcp_rmem=4096 87380 6291456、net.ipv4.tcp_wmem=4096 16384 4194304。sudo sysctl -w net.ipv4.tcp_tw_reuse=1
sudo sysctl -w net.core.somaxconn=4096
sudo sysctl -p # 使配置永久生效
7. 禁用不必要功能
关闭Tomcat中不使用的功能,减少资源消耗:
context.xml或server.xml中设置autoDeploy="false"、deployOnStartup="false",避免应用自动部署导致的性能开销;server.xml的Connector中设置enableLookups="false",避免Tomcat解析客户端IP地址的域名(如request.getRemoteHost()),减少网络开销;server.xml中注释或删除AJP连接器配置(默认端口8009),减少不必要的端口监听。8. 监控与持续调优
使用监控工具实时跟踪Tomcat性能,定位瓶颈:
jconsole、VisualVM(需开启JMX)监控JVM内存使用、线程状态、GC频率;access_log(在server.xml中开启)分析请求耗时、高频请求路径,针对性优化慢请求。