在 Debian 系统上,Tomcat 启动慢通常不是单一原因,而是操作系统 + JVM + 应用三者共同作用的结果。下面按最常见 → 较少见的顺序说明原因,并给出对应的优化建议。
这是 Debian + Tomcat 启动慢的第一大元凶。
"Initializing secure random number generator"
/dev/random 生成安全随机数/dev/random 会阻塞,直到系统熵足够✅ 使用非阻塞随机数源
在 catalina.sh 或 setenv.sh 中加:
export CATALINA_OPTS="$CATALINA_OPTS -Djava.security.egd=file:/dev/./urandom"
或直接改 jre/lib/security/java.security:
securerandom.source=file:/dev/./urandom
✅ 安装熵增强工具(推荐服务器)
sudo apt install haveged
sudo systemctl enable haveged
sudo systemctl start haveged
-Xms / -Xmx-Xms512m
-Xmx1024m
-XX:+UseG1GC
完整示例:
export CATALINA_OPTS="$CATALINA_OPTS \
-Xms512m -Xmx1024m \
-XX:+UseG1GC \
-Djava.security.egd=file:/dev/./urandom"
Tomcat 启动时可能尝试解析本机 hostname。
hostname
hostname -f
确保 /etc/hosts 中有:
127.0.0.1 localhost your-hostname
如果是 systemd 管理 Tomcat:
systemctl status tomcat9
journalctl -u tomcat9
可能原因:
查看日志:
tail -f logs/catalina.out
观察哪一步耗时最长。
| 情况 | 建议 |
|---|---|
| JDK 7 / 8 | 升级到 JDK 11+ |
| Tomcat 8 | 升级到 9 / 10 |
| Debian 9 | 建议升级到 Debian 11+ |
iostat -x 1
✅ 1. 是否用了 /dev/urandom
✅ 2. 是否设置了 -Xms
✅ 3. hostname 能否正常解析
✅ 4. 是否安装 haveged
✅ 5. 启动日志中是否卡在某一步
# setenv.sh
export CATALINA_OPTS="$CATALINA_OPTS \
-server \
-Xms512m \
-Xmx1024m \
-XX:+UseG1GC \
-Djava.security.egd=file:/dev/./urandom"
如果你愿意,可以贴出:
catalina.out 启动日志我可以精确判断是哪一个原因。