Tomcat性能调优技巧
合理配置JVM内存参数是Tomcat性能调优的基础,能有效减少垃圾回收(GC)频率和停顿时间。关键参数包括:
-Xms2048m -Xmx2048m)。-Xmn1024m),优化年轻代GC效率。-XX:MaxMetaspaceSize=256m)。-XX:+UseG1GC),可通过-XX:MaxGCPauseMillis=200设置最大GC停顿时间(目标200ms以内),平衡吞吐量与延迟。线程池是Tomcat处理并发请求的核心,需根据应用类型(CPU密集型/IO密集型)调整:
minSpareThreads=50),避免请求到来时频繁创建线程。maxIdleTime=60000,即60秒)的线程将被销毁,释放资源。acceptCount=1000),队列满则拒绝请求(需根据并发量调整,避免队列过大导致内存溢出)。<Executor>标签定义全局线程池(如<Executor name="tomcatThreadPool" maxThreads="500" minSpareThreads="50"/>),供多个Connector共享,提升资源利用率。连接器负责处理HTTP请求,选择合适的协议和参数能显著提升性能:
protocol="org.apache.coyote.http11.Http11NioProtocol")或APR/native(基于本地库,protocol="org.apache.coyote.http11.Http11AprProtocol",需安装APR库),其中APR在高并发下性能最优。compression="on"),设置压缩阈值(compressionMinSize="2048",即2KB以上才压缩)和压缩类型(compressableMimeType="text/html,text/xml,text/plain,application/javascript")。enableLookups="false",避免Tomcat解析客户端IP对应的主机名(DNS查询会增加延迟)。connectionTimeout="20000"(20秒),避免长时间等待无效连接;对于上传请求,设置disableUploadTimeout="true",防止上传过程中超时中断。静态资源(图片、CSS、JS)的处理会消耗Tomcat资源,建议通过以下方式优化:
<Context>标签配置静态资源缓存(如<Resources cachingAllowed="true" cacheMaxSize="100000"/>),设置合理的缓存时间(如Expires头),减少重复请求。Filter或前端构建工具),进一步减少传输体积。会话管理不当会导致内存占用过高,需合理配置:
<session-config><session-timeout>30</session-timeout></session-config>(30分钟),避免长期不活动的会话占用内存。<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>,避免磁盘I/O操作。net.core.somaxconn增加监听端口队列长度,vm.swappiness降低内存交换概率),提升系统对Tomcat的支持。持续监控Tomcat性能是调优的关键,需使用工具定位瓶颈:
-Dcom.sun.management.jmxremote参数),使用JConsole、VisualVM等工具远程监控线程池、堆内存、GC等详细指标。