优化 Tomcat 性能可以从配置调优、JVM 调优、系统架构、代码层面等多个角度入手。下面按重要程度和可操作性给你一个较系统的清单。
Tomcat 的性能瓶颈通常在 Connector 配置。
server.xml 中:
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol" />
<Executor
name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="500"
minSpareThreads="50"
maxQueueSize="1000" />
原则:
maxThreads:根据 CPU 核数和业务类型(CPU 密集 / IO 密集)keepAliveTimeout="15000"
maxKeepAliveRequests="100"
JAVA_OPTS="-Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
-XX:+UseG1GC
-XX:+UseG1GC
# 或 ZGC(低延迟)
-XX:+UseZGC
-Xlog:gc*:file=/logs/gc.log:time
<Valve className="org.apache.catalina.valves.AccessLogValve"
enabled="false" />
(生产可视情况关闭访问日志)
<!-- 注释掉 -->
<!-- <Connector port="8009" protocol="AJP/1.3" /> -->
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/css,application/json"
使用 HikariCP / Druid
maximumPoolSize=20
minimumIdle=5
ulimit -n 65535
net.core.somaxconn=65535
net.ipv4.tcp_tw_reuse=1
❌ 线程数越大越好
❌ 堆内存越大越好
❌ 所有请求都走 Tomcat
✅ 瓶颈在哪调哪
✅ 先压测,再优化
如果你愿意,可以告诉我:
我可以给你一套可直接用的配置模板。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。