在 Debian 上 Tomcat 启动/加载慢 是非常常见的问题,通常不是 Tomcat 本身有 bug,而是环境或配置导致。下面按「最常见 → 较少见」给你系统梳理原因和解决办法。
Tomcat 启动时会用 SecureRandom 生成 session id、证书等。
Debian 默认使用:
/dev/random
如果熵不够,会阻塞等待,导致启动慢 30s~几分钟。
✅ 表现:
Deploying web application directoryCreation of SecureRandom instance for session ID generation
✅ 解决办法(推荐): 编辑:
/etc/default/tomcat9 (或 tomcat10)
或
CATALINA_OPTS="-Djava.security.egd=file:/dev/./urandom"
或直接修改:
$JAVA_HOME/conf/security/java.security
securerandom.source=file:/dev/./urandom
✅ 更彻底(服务器推荐):
apt install haveged
systemctl enable haveged
Tomcat 会尝试对客户端 IP 做 DNS 反向解析。
如果 DNS 不通或慢,会卡很久。
✅ 解决办法:
server.xml
<Connector
address="0.0.0.0"
port="8080"
enableLookups="false"
/>
Tomcat 默认会:
如果有:
✅ 优化:
<Context scanInterval="0" />
或在 conf/catalina.properties:
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar
Debian 默认 Tomcat 内存很小。
✅ 查看:
ps -ef | grep tomcat
✅ 调整:
CATALINA_OPTS="-Xms512m -Xmx1024m"
某些应用(报表、验证码)会触发:
java.awt.headless
✅ 解决:
apt install fonts-dejavu
或
-Djava.awt.headless=true
✅ 测试:
dd if=/dev/zero of=/tmp/test bs=1M count=100
✅ 可改 temp 目录:
CATALINA_TMPDIR=/fastdisk/tmp
Debian 用 systemd 管理 Tomcat:
systemctl status tomcat9
✅ 如果是 timeout:
TimeoutStartSec=300
# 1. 看卡在哪
journalctl -u tomcat9 -f
# 2. 看启动时间
systemd-analyze blame
# 3. 测试熵
cat /proc/sys/kernel/random/entropy_avail
# 小于 100 就危险
Debian 上 Tomcat 慢,80% 是
SecureRandom + 熵不足导致的。
如果你愿意,可以告诉我:
我可以直接帮你定位到具体哪一行卡住。