1. 连接器(Connector)配置优化
连接器是Tomcat处理HTTP请求的核心组件,合理配置可显著提升并发处理能力。优先使用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>
同时,调整连接超时(connectionTimeout
,单位毫秒)和最大连接数(maxConnections
,默认10000,可根据服务器资源调整),避免无效连接占用资源。
2. 线程池(Executor)配置优化
线程池是Tomcat处理请求的执行单元,合理配置可平衡资源利用率与响应速度。在server.xml
中定义线程池:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" maxQueueSize="100" />
maxThreads
:最大并发线程数(默认200,可根据CPU核心数调整,如4核8G内存可设为300-500);minSpareThreads
:最小空闲线程数(默认10,保持一定空闲线程避免频繁创建/销毁);maxQueueSize
:等待队列大小(默认100,超过则拒绝请求)。<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
启用线程池后,Tomcat会优先从线程池获取线程处理请求,提升并发效率。
3. JVM调优
JVM参数直接影响Tomcat的内存使用与垃圾回收效率,需根据应用特点调整:
-Xms
)与最大堆(-Xmx
)为相同值(避免堆扩容带来的性能波动),如:export CATALINA_OPTS="-Xms1024m -Xmx2048m"
-XX:NewRatio
调整(默认2,即新生代占1/3,老年代占2/3),若应用存在大量短期对象,可减小该值(如-XX:NewRatio=1
,新生代占1/2);export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseG1GC"
-XX:MaxMetaspaceSize
(如-XX:MaxMetaspaceSize=256m
),避免元空间溢出。4. 系统内核优化
调整Linux内核参数可提升Tomcat处理高并发的能力:
/etc/sysctl.conf
,添加:net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216
执行sysctl -p
使配置生效;/etc/security/limits.conf
,添加:* soft nofile 65535 * hard nofile 65535
提升单个进程可打开的文件描述符数量(默认1024可能不足)。5. 启用压缩
通过压缩响应数据减少网络传输量,提升页面加载速度。在server.xml
的Connector中配置:
<Connector port="8080" protocol="HTTP/1.1" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/css,text/javascript,application/json" />
compression="on"
:启用压缩;compressionMinSize
:启用压缩的最小响应大小(默认0,建议设为2048字节以上,避免小文件压缩反而增加CPU开销);compressableMimeType
:指定可压缩的MIME类型(覆盖常见的文本、JSON、CSS等)。6. 禁用不必要的组件
server.xml
中注释或删除AJP连接器(默认端口8009),减少不必要的资源消耗;AccessLogValve
(访问日志),若无需记录访问日志,可在server.xml
中注释相关配置,降低I/O开销。7. 应用代码优化
性能调优需结合应用本身,常见措施包括:
StringBuilder
);ConcurrentHashMap
替代synchronized
)。8. 监控与调优工具
使用工具实时监控Tomcat性能,定位瓶颈:
/manager/status
页面查看线程池状态、请求处理时间、内存使用等指标;以上方法需根据实际应用场景(如并发量、应用类型、硬件资源)调整,建议先在测试环境验证效果,再应用到生产环境。