1. 调整JVM内存参数
-Xms)与最大堆(-Xmx)设置为相同值(如-Xms2G -Xmx2G),避免JVM在运行时动态扩容堆内存,减少因扩容导致的性能波动。建议分配物理内存的70%-80%(需预留内存给系统和其他进程)。-Xmn768m,对应-XX:NewRatio=3)。若应用对象生命周期短(如Web请求),可适当增大年轻代比例,减少对象过早进入老年代的频率。OutOfMemoryError。建议设置初始大小为128M-256M(-XX:MetaspaceSize=128m),最大值为256M-512M(-XX:MaxMetaspaceSize=256m)。2. 选择合适的垃圾回收器
-XX:+UseG1GC启用。可设置目标最大停顿时间(-XX:MaxGCPauseMillis=200,单位毫秒),平衡吞吐量与延迟。G1GC通过分区回收机制,减少Full GC的频率。-XX:+UseParallelGC启用。可调整并行线程数(-XX:ParallelGCThreads=4,建议等于CPU核心数),提升垃圾回收效率。3. 优化线程池配置
/etc/tomcat9/server.xml(或对应版本的server.xml)中,修改<Connector>标签的线程池参数。maxThreads(最大并发线程数)建议设置为CPU核心数×200(如8核CPU设置为1600);minSpareThreads(最小空闲线程数)设置为50-100,保持线程池的基础并发能力;acceptCount(请求队列长度)设置为500-1000,缓冲突发流量(避免请求被拒绝)。protocol="org.apache.coyote.http11.Http11Nio2Protocol"),提升非阻塞I/O的吞吐量;若需支持HTTP/2(Tomcat 8.5+),可设置为protocol="org.apache.coyote.http2.Http2Protocol",通过多路复用减少连接开销。4. 启用压缩减少传输体积
server.xml的<Connector>标签中,添加compression="on"启用HTTP响应压缩;设置compressionMinSize="2048"(压缩阈值,单位字节,小于该值的响应不压缩);compressableMimeType指定压缩的MIME类型(如text/html,text/css,application/json,application/javascript)。压缩可将响应体积减少30%以上,提升页面加载速度。5. 关闭非必要功能
server.xml中,设置enableLookups="false"关闭DNS反查(避免Tomcat解析客户端IP地址的域名,提升响应速度);设置disableUploadTimeout="true"防止上传大文件时线程阻塞(允许上传操作有更长的超时时间)。6. 监控与调优
jconsole、VisualVM等工具监控JVM内存使用情况(如堆内存占用、GC频率)、线程状态(如活跃线程数、线程阻塞情况);通过Tomcat的logging.properties调整日志级别(如将org.apache.catalina设置为INFO,减少不必要的日志输出),避免日志记录成为性能瓶颈。注意事项:
sudo systemctl restart tomcat9)使更改生效;