在 Debian 上 Tomcat 启动慢,通常不是 Tomcat 本身的问题,而是 系统环境或配置 导致的。下面按最常见原因 → 排查方法 → 解决办法来说明。
Tomcat 启动时会生成随机数是用 /dev/random
如果系统熵不够,就会卡很久。
表现:
Starting ProtocolHandler解决:
cat /proc/sys/kernel/random/entropy_avail
如果 < 100,就是这个问题。
✅ 安装 haveged:
apt install haveged
systemctl enable haveged
systemctl start haveged
✅ 或修改 Tomcat 使用 /dev/urandom
vi $CATALINA_HOME/bin/catalina.sh
加:
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"
Debian 默认云服务器可能没开 swap
查看:
free -h
swapon --show
解决(示例 1G):
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
默认参数在小内存机器上会非常慢。
建议基础配置:
JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC"
Tomcat 会扫描所有 jar 的 web.xml、annotation
加速方法:
<Context>
<JarScanner scanAllDirectories="false"/>
</Context>
排查:
tail -f /var/log/tomcat*/catalina.out
如果是 systemctl start tomcat
可能受 TimeoutStartSec 限制
systemctl edit tomcat9
加:
[Service]
TimeoutStartSec=300
Tomcat 会解析 hostname
解决:
hostnamectl
hostname -I
/etc/hosts 中必须有:
127.0.0.1 localhost your-hostname
# 1. 熵
cat /proc/sys/kernel/random/entropy_avail
# 2. 内存
free -h
# 3. Java
java -version
# 4. 日志
tail -f /var/log/tomcat*/catalina.out
你可以告诉我:
我可以精准定位是哪一个原因。