1. JVM内存调优
JVM内存配置是Tomcat性能的基础,需根据服务器资源合理设置。关键参数包括:
-Xms2G -Xmx2G)。-Xmn1G),减少Full GC频率。PermGen space错误(如-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M)。-XX:+UseG1GC),兼顾吞吐量与延迟;低延迟场景可选ZGC(-XX:+UseZGC)。catalina.sh(开头添加JAVA_OPTS),Windows下修改catalina.bat。2. 线程池配置优化
线程池决定Tomcat并发处理能力,需根据CPU核心数和应用负载调整server.xml中的<Connector>或<Executor>参数:
8~16,高并发场景可适当增加,但不宜超过1000)。10或略高(如20),减少线程创建开销。maxThreads的1.5~2倍,如maxThreads=200则设为300)。8192,可根据需求调整)。<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="500" minSpareThreads="100" acceptCount="1000" connectionTimeout="20000"/>。3. 连接器协议优化
默认的BIO(阻塞I/O)连接器性能较差,建议切换为NIO(非阻塞I/O)或APR(本地库,性能更高):
protocol="org.apache.coyote.http11.Http11NioProtocol"(Tomcat 7+默认)。libtcnative),配置protocol="org.apache.coyote.http11.Http11AprProtocol",性能优于NIO(尤其在高并发连接场景)。keepAliveTimeout(保持连接超时时间,默认5000ms)调整,减少连接重建开销。4. 静态资源处理优化
静态资源(图片、CSS、JS)的处理会消耗Tomcat资源,建议:
proxy_pass转发动态请求到Tomcat,减少Tomcat负载。server.xml的<Context>中启用缓存(cachingAllowed="true"),设置缓存大小(cacheMaxSize="100000"),减少磁盘IO。<Context cachingAllowed="true" cacheMaxSize="100000">。5. 禁用不必要功能
关闭Tomcat中不使用的功能,减少资源消耗:
enableLookups="false"(默认true),避免Tomcat解析客户端IP对应的域名(如<Connector enableLookups="false"/>)。reloadable="false"(默认true),避免Tomcat监控WEB-INF/classes和WEB-INF/lib目录的变化(如<Context reloadable="false"/>)。6. 启用压缩功能
通过压缩响应内容减少网络传输量,提升页面加载速度。在server.xml的<Connector>中配置:
<Connector ... compression="on" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json"/>
compression="on":开启压缩。compressableMimeType:指定需要压缩的MIME类型(如HTML、CSS、JS、JSON等)。7. Linux内核参数优化
调整Linux内核参数,提升Tomcat的网络和文件处理能力:
net.core.rmem_max=1310720、net.core.wmem_max=1310720)。net.ipv4.tcp_tw_reuse=1,减少TIME_WAIT状态的连接占用。net.ipv4.tcp_syncookies=1,防止SYN Flood攻击。ulimit -n 65535),避免高并发时文件描述符耗尽。sysctl -p使内核参数生效。8. 监控与持续调优
性能调优需结合监控数据进行迭代优化,常用工具包括:
jconsole、jvisualvm监控JVM内存、线程、GC等情况。