在 Debian 上运行 Tomcat 感觉“慢”,通常可以从 系统资源、JVM 参数、Tomcat 配置、应用本身、磁盘/网络 几个方向来排查和优化。下面按「先排查 → 再优化」给你一套实用方案。
先判断是哪种慢:
可用命令:
top
htop
free -h
df -h
iostat -x 1
journalctl -u tomcat
Tomcat 默认 JVM 内存很小,容易频繁 GC。
查看当前 JVM 参数:
ps aux | grep tomcat
修改 JVM 参数(Debian 推荐方式):
sudo nano /etc/default/tomcat9
(tomcat 版本不同可能是 tomcat10)
示例(4G 内存服务器):
JAVA_OPTS="-Xms1g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
重启:
sudo systemctl restart tomcat
✅ 建议:
-Xms = -Xmx(避免动态扩容)Tomcat 启动慢,常见原因是:
SecureRandom 阻塞
解决方法(非常有效):
sudo nano $JAVA_HOME/jre/lib/security/java.security
改为:
securerandom.source=file:/dev/urandom
或 JVM 参数加:
-Djava.security.egd=file:/dev/./urandom
编辑:
sudo nano /etc/tomcat9/server.xml
优化 connector:
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
maxThreads="200"
minSpareThreads="20"
acceptCount="100"
connectionTimeout="20000"
enableLookups="false"
compression="on" />
✅ 关键点:
enableLookups=false(禁用 DNS 反查)maxThreads 根据 CPU 调整查看限制:
ulimit -a
修改:
sudo nano /etc/security/limits.conf
示例:
tomcat soft nofile 65535
tomcat hard nofile 65535
iostat -x 1
如果是:
优化:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="combined"
buffered="true" />
常见:
建议:
jstack <pid>
看线程在干嘛。
确保不是多次重启:
systemctl status tomcat
避免:
JAVA_OPTS="-Xms1g -Xmx2g -XX:+UseG1GC -Djava.security.egd=file:/dev/./urandom"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
enableLookups="false"
你可以告诉我:
我可以直接给你一份 可复制的配置文件。