Tomcat 启动或加载慢,通常不是“一个原因”,而是多个环节叠加造成的。下面按最常见 → 较少见的顺序,帮你系统梳理原因和对应解决办法。
很多情况下 Tomcat 其实已经启动完了,但应用还在初始化。
常见点:
@Bean、@Configuration✅ 排查方式:
# 看启动耗时
catalina.out
# 或
springboot 的 Started xxx in x.x seconds
✅ 建议:
@Lazy)典型现象:
SecureRandomCreation of SecureRandom instance for session ID generation
原因:
/dev/random 阻塞✅ 解决办法(非常有效):
vim $JAVA_HOME/jre/lib/security/java.security
改成:
securerandom.source=file:/dev/urandom
或启动参数:
-Djava.security.egd=file:/dev/./urandom
✅ 这是生产环境必改项。
webapps 下项目多Tomcat 启动时:
✅ 建议:
Tomcat 会扫描:
✅ 解决办法(效果明显):
排除不需要扫描的 jar
<Context>
<JarScanner scanManifest="false"/>
</Context>
或在 catalina.properties:
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar
✅ 建议常见配置(示例):
-Xms512m
-Xmx1024m
-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=256m
现象:
localhost✅ 检查:
hostname
cat /etc/hosts
✅ 必须有:
127.0.0.1 localhost
✅ 建议:
connectTimeout=5000
socketTimeout=5000
✅ 检查:
java -version
✅ 建议:
tail -f logs/catalina.out
看卡在哪一行
vim logging.properties
或 Spring Boot:
logging.level.org.springframework=INFO
jstack pid > stack.txt
看线程卡在哪
Tomcat 启动慢,90% 不在 Tomcat,而在:
- 应用初始化逻辑
- Linux 熵池
- 扫描 & 配置问题
如果你愿意,可以告诉我:
我可以直接帮你 精准定位到哪一行卡住。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。