在 Debian 上优化 Tomcat,通常可以从系统层面、JVM 层面、Tomcat 配置层面、应用层面几个方向入手。下面给你一份比较实用、可落地的优化清单。
编辑 /etc/sysctl.conf:
# 提高文件描述符上限
fs.file-max = 100000
# TCP 优化
net.core.somaxconn = 4096
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
执行:
sysctl -p
编辑 /etc/security/limits.conf:
tomcat soft nofile 65535
tomcat hard nofile 65535
如果你用 systemd 启动 Tomcat,还需在 service 文件里加:
LimitNOFILE=65535
Debian 下通常编辑:
/etc/default/tomcat9 # 或 tomcat10
示例(4G 内存服务器):
JAVA_OPTS="-server \
-Xms2g -Xmx2g \
-XX:MetaspaceSize=256m \
-XX:MaxMetaspaceSize=512m \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/var/log/tomcat/heapdump.hprof"
配置文件:/etc/tomcat9/server.xml
<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"
compressibleMimeType="text/html,text/xml,text/plain,application/json"
/>
说明:
Nio2:异步非阻塞,性能更好maxThreads:根据 CPU 和并发调整compression:减少网络传输<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
开发环境可保留,生产建议注释。
<!-- <Connector port="8009" protocol="AJP/1.3" /> -->
/etc/tomcat9/context.xml 或 server.xml:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false">
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
logging.properties:
INFO 即可# 查看线程数
ps -eLf | grep tomcat | wc -l
# 查看 GC
jstat -gcutil <pid> 1000
# 内存快照
jmap -dump:live,format=b,file=tomcat.hprof <pid>
-Xms4g -Xmx4g -G1GC如果你愿意,可以告诉我:
我可以帮你给出精确调优参数。