Java 的 Tomcat 启动时“慢”是一个很常见的问题,原因通常可以归为配置、资源、应用本身、环境几类。下面按最常见 → 较少见的顺序说明,并给出排查/解决思路。
Tomcat 启动慢,通常不是 Tomcat 本身,而是部署的应用慢。
常见情况:
@PostConstruct / ServletContextListener 中做了:
✅ 排查方法:
# 查看启动日志,看卡在哪一步
catalina.out
✅ 解决:
@LazyTomcat / Spring 启动时会使用 随机数(SecureRandom)
Linux 默认:
/dev/random
熵不够时会阻塞等待,导致启动特别慢(几十秒甚至几分钟)
✅ 典型表现:
SessionIdGeneratorCreation of SecureRandom instance✅ 解决方案(强烈推荐):
修改 catalina.sh 或 JAVA_OPTS:
-Djava.security.egd=file:/dev/./urandom
或:
yum install rng-tools
systemctl start rngd
✅ 查看:
jstat -gcutil <pid> 1000
✅ 建议:
-Xms512m -Xmx1024m
Tomcat 默认会:
META-INFwebapps 下所有目录✅ 优化:
conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false">
Tomcat 会扫描大量 jar(尤其 Spring Boot 的 fat jar)
✅ 优化:
conf/catalina.properties
org.apache.catalina.startup.ContextConfig.jarsToSkip=*
Tomcat 启动时会:
✅ 解决:
/etc/hosts
127.0.0.1 localhost your-hostname
✅ 表现:
卡在 DataSource 初始化
✅ 解决:
| 原因 | 说明 |
|---|---|
| 杀毒软件 | Windows 下扫描 jar |
| 磁盘 IO 慢 | 云服务器低配磁盘 |
| 多个 Tomcat 端口冲突 | 启动重试 |
| 使用 IDE 调试 | 本身就会慢 |
你可以按顺序确认:
SecureRandom → 用 urandom如果你愿意,可以:
我可以直接帮你精确定位“慢在哪”。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。