1. 连接器配置优化
使用高性能连接器是提升Tomcat性能的基础。推荐采用NIO(非阻塞I/O)或NIO2连接器(如org.apache.coyote.http11.Http11Nio2Protocol),相比传统BIO(阻塞I/O),它们能更高效地处理高并发请求。此外,可启用HTTP/2协议(通过Http2Protocol配置),支持多路复用、头部压缩等功能,减少页面加载时间。同时,合理设置连接超时(connectionTimeout,如20000毫秒)和最大连接数(maxConnections,如10000),避免无效连接占用资源。
2. 线程池配置优化
线程池是Tomcat处理请求的核心资源,需通过<Executor>元素定义并绑定到连接器。关键参数包括:maxThreads(最大线程数,如500,根据服务器CPU核心数和应用负载调整)、minSpareThreads(最小空闲线程数,如50,保持一定空闲线程减少创建开销)、maxQueueSize(接受队列大小,如100,避免请求堆积导致拒绝服务)。示例配置:<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" maxQueueSize="100"/>,并在<Connector>中通过executor属性引用该线程池。
3. JVM调优
合理的JVM参数能显著提升Tomcat的稳定性和性能。需重点配置:
-Xms,如512m)和最大堆(-Xmx,如1024m),避免频繁扩容;-XX:NewRatio(如2,表示新生代:老年代=1:2)调整,适应应用的对象生命周期;-XX:+UseG1GC),它在高并发场景下表现更优,能有效减少停顿时间;-XX:MaxMetaspaceSize(如2g),避免元空间溢出。4. 启用压缩
通过压缩响应内容减少网络传输量,提升页面加载速度。在<Connector>中添加compression="on",并设置compressionMinSize(如2048字节,小于该大小的文件不压缩)和compressableMimeType(如text/html,text/xml,text/javascript,text/css,指定可压缩的MIME类型)。
5. 禁用不必要的组件
server.xml中注释或删除AJP连接器(port="8009"),减少不必要的开销;<Connector>中设置enableLookups="false",避免Tomcat对客户端IP进行DNS反向解析,降低延迟。6. 操作系统性能调优
/etc/security/limits.conf,增加tomcat用户的文件描述符限制(如* soft nofile 65535、* hard nofile 65535),避免高并发下因文件描述符耗尽导致连接失败;/etc/sysctl.conf中的TCP参数,如net.core.somaxconn(增加监听队列长度,如1024)、net.ipv4.tcp_tw_reuse(启用TIME-WAIT连接复用,如1),提升并发处理能力。7. 监控与验证
使用工具持续监控Tomcat性能,及时发现问题并调整。常用工具包括:
setenv.sh启用JMX代理(如-Dcom.sun.management.jmxremote),使用JConsole或VisualVM监控内存、线程、GC等指标;top、htop查看CPU和内存使用,jmap -heap <pid>查看堆内存详情,jstack <pid>分析线程状态;