CentOS 上提升 Tomcat 性能的系统化调优指南
一 操作系统层优化
* soft nofile 65536、* hard nofile 65536net.core.somaxconn = 65535net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1,新内核不建议开启,避免连接异常。fs.file-max = 65536sysctl -p 使配置生效。echo never > /sys/kernel/mm/transparent_hugepage/enabled二 JVM 层优化
-Xms4g -Xmx4g-XX:MetaspaceSize 与 -XX:MaxMetaspaceSize,而非已废弃的 PermSize/MaxPermSize。-XX:+UseG1GC-XX:+UseParallelGC-Xmn2g 或使用 -XX:NewRatio=2-XX:ParallelGCThreads=8JAVA_OPTS 或 CATALINA_OPTSjps 获取进程号,jmap -heap <pid> 查看堆与 GC 配置是否生效。三 Tomcat 连接器与线程池
org.apache.coyote.http11.Http11NioProtocolorg.apache.coyote.http2.Http2Protocol(需 TLS)<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="500"
minSpareThreads="50"
maxQueueSize="100"/>
<Connector executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"/>
maxThreads:最大工作线程数(并发处理能力上限)minSpareThreads:最小空闲线程,快速响应突发acceptCount:当线程耗尽时排队的最大连接数maxConnections:Tomcat 能接受的最大连接数(含排队与处理中)connectionTimeout:连接超时,常用 20000 msenableLookups="false"compression="on"、compressionMinSize="2048"、compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json"四 应用与 I/O 层优化
五 压测与监控闭环
jps、jmap -heap <pid>、jstat -gc <pid>、jstack <pid> 定位 GC、线程与内存瓶颈。