tomcat启动后卡死

本文记录了一次在测试机上启动多个Tomcat实例时遇到的死锁问题。通过使用jstack工具,发现主进程与定时任务在调用Springframework的getBean方法时发生了死锁。文中分享了排查及定位问题的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一台机器上启动多个tomcat遇到的问题。程序在开发机上用jetty跑没有问题。但是部署到测试机上却出问题了。而且时而正常,时而卡住。非常诡异。

看日志,一直卡在
Initializing Spring root WebApplicationContext
后面就没有日志了。

将Spring开启debug日志级别,catch可能的exception,统统没用。在网上能查到的说法都是可能某个线程连接数据库卡住了(要么是数据库地址配置不对,要么是数据库服务器暂时不可用),但是都不符合我的情况。

后来用了一个超好用的工具jstack,直接打印出堆栈情况。注意要用启动tomcat的用户执行这个命令,例如我用user_00启动tomcat,用root执行jstack都没法得到正确输出。

然后发现问题所在,main线程和另一个定时任务死锁了,他们都调用了Spring framework的getBean方法。具体还没有仔细分析。

所以如果再遇到卡住的问题,可以试试jstack。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值