Tomcat 调优通常分为 JVM 调优、Connector 调优、线程池调优、系统/操作系统层面调优 几个方向。下面按“常用参数 + 示例 + 说明”来讲。
JAVA_OPTS="-Xms2g -Xmx2g -Xmn512m"
-Xms:初始堆大小(建议 = 最大堆,避免抖动)-Xmx:最大堆大小-Xmn:年轻代大小一般规则:
Xmx = 物理内存的 50%~70%
Xms = Xmx
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
JDK11+:
-XX:+UseG1GC
JDK17 可尝试 ZGC(低延迟):
-XX:+UseZGC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:/opt/tomcat/logs/gc.log
JDK9+:
-Xlog:gc*:file=/opt/tomcat/logs/gc.log:time
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
maxThreads="500"
minSpareThreads="50"
acceptCount="1000"
maxConnections="10000"
connectionTimeout="20000"
keepAliveTimeout="15000"
maxKeepAliveRequests="100"
compression="on"
compressionMinSize="2048"
/>
| 参数 | 说明 |
|---|---|
| maxThreads | 最大工作线程数 |
| minSpareThreads | 最小空闲线程 |
| acceptCount | 队列等待数 |
| maxConnections | 最大连接数 |
| connectionTimeout | 连接超时(ms) |
| keepAliveTimeout | 长连接超时 |
| compression | 开启 gzip |
<Executor
name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="800"
minSpareThreads="100"
maxQueueSize="1000"/>
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"/>
✅ 更适合高并发场景
<!-- 注释或删除 -->
<!-- <Connector port="8009" protocol="AJP/1.3" /> -->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false">
# 文件描述符
ulimit -n 65535
# 内核参数
net.core.somaxconn=65535
net.ipv4.tcp_tw_reuse=1
| 场景 | 配置 |
|---|---|
| 普通 Web | maxThreads=200~500 |
| 高并发 API | maxThreads=800~1000 |
| 内存 | Xmx=4~8G |
| GC | G1 |
如果你愿意,可以告诉我:
我可以直接给你一套可落地的参数配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。