在 Debian 上优化 Tomcat 性能,通常可以从系统层面、JVM 层面、Tomcat 配置层面、应用层面四个方向入手。下面按实战优先级给你一套较完整的调优思路。
Tomcat 高并发时容易遇到 “Too many open files”
# 查看
ulimit -n
# 修改(永久)
sudo vim /etc/security/limits.conf
tomcat soft nofile 65535
tomcat hard nofile 65535
若用 systemd 启动,还要加:
[Service]
LimitNOFILE=65535
sudo vim /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
sysctl -p
sysctl vm.swappiness=10
Tomcat 性能 ≈ JVM 调优
编辑:
/etc/default/tomcat9
# 或
/usr/share/tomcat9/bin/setenv.sh
示例(8G 内存机器):
JAVA_OPTS="-Xms4g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
✅ 建议:
-Xms = -Xmx(避免动态扩容)-XX:+UseG1GC
-XX:+UseG1GC
# 或 ZGC(超低延迟)
-XX:+UseZGC
-Xloggc:/var/log/tomcat9/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
配置文件:/etc/tomcat9/server.xml
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
maxThreads="500"
minSpareThreads="50"
acceptCount="1000"
maxConnections="10000"
connectionTimeout="20000"
disableUploadTimeout="true"
enableLookups="false"
/>
参数说明:
maxThreads:处理请求的最大线程数acceptCount:等待队列长度enableLookups=false:禁用 DNS 反查(提升性能)<!-- 注释掉 -->
<!-- <Connector port="8009" protocol="AJP/1.3" /> -->
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/css,application/json"
<Context cachingAllowed="true" cacheMaxSize="102400" />
使用 HikariCP(比 DBCP 快很多)
maximumPoolSize=20
minimumIdle=5
connectionTimeout=30000
session="false"# JVM
jstat -gcutil <pid> 1000
# 线程
jstack <pid> | grep "http" | wc -l
JAVA_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxMetaspaceSize=512m"
maxThreads="500"
acceptCount="1000"
maxConnections="10000"
如果你能告诉我:
我可以给你一套精准配置模板。