Debian 上 Tomcat 性能优化实操指南
一 基线与环境准备
[Service]
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_OPTS=-Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxMetaspaceSize=512m"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=always
修改后执行:sudo systemctl daemon-reload && sudo systemctl restart tomcat。以上做法便于后续按模块调整参数并热生效。二 JVM 内存与 GC 调优
-XX:+UseParallelGC);-XX:+UseG1GC),并配合合理的停顿目标(如 -XX:MaxGCPauseMillis=200,视负载调整)。-Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxMetaspaceSize=512m -Djava.security.egd=file:/dev/./urandom
ps aux | grep tomcat 查看 JVM 参数;或用 jinfo <pid>、jmap -heap <pid> 检查堆与元空间配置是否生效。三 连接器 线程池 与协议
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="500"
minSpareThreads="50"
maxQueueSize="100"/>
<Connector executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
redirectPort="8443"
maxConnections="10000"
acceptCount="100"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json"/>
<Connector port="8443"
protocol="org.apache.coyote.http2.Http2Protocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA"/>
</SSLHostConfig>
</Connector>
四 操作系统与容器资源限制
tomcat soft nofile 65536、tomcat hard nofile 65536、tomcat soft nproc 8192、tomcat hard nproc 8192;LimitNOFILE=65536、LimitNPROC=8192。net.core.somaxconn=4096(增大全连接队列)net.ipv4.tcp_tw_reuse=1(快速回收 TIME_WAIT)sudo cgcreate -g cpu,memory:/tomcat
echo "50000" | sudo tee /sys/fs/cgroup/cpu/tomcat/cpu.cfs_quota_us # 约 50% CPU
echo "1073741824" | sudo tee /sys/fs/cgroup/memory/tomcat/memory.limit_in_bytes # 1GB
echo <PID> | sudo tee /sys/fs/cgroup/cpu/tomcat/tasks
echo <PID> | sudo tee /sys/fs/cgroup/memory/tomcat/tasks
MemoryMax=2G 等。五 应用与运维实践