2

记一次Tomcat卡死在 Deploying web application 步骤的问题 - Tassdar

 1 year ago
source link: https://www.cnblogs.com/Tassdar/p/16315830.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

记一次Tomcat卡死在 Deploying web application 步骤的问题

公司有一个历史的遗留项目是传统的MVC架构的前后不分离的项目,一开始使用JDK1.7写的,后来前一阵老板说想在这个远古项目上加点功能,顺带换换皮,于是乎一帮程序员们就用JDK1.8重新翻新了一遍项目顺道改了改UI,部署的方式也从WebLogic换成了Tomcat,本地测试部署也没啥问题,于是乎决定上生产给老板看看,结果一上生产,不出所料果然出事儿了。

之前在本地和测试环境部署都没有问题的项目卡在了 Deploying web application这一步不动了,码农们尝试了各种骚操作:重装系统、重启、重装Tomcat、甚至JDK都重装了3次,依然是卡在这个步骤过不去。

1417396-20220526230312045-104328827.png

 从网上搜了这个问题,目前网上出现这个问题最多的原因是因为securerandom.source=file:/dev/./urandom 没有指定的问题,于是乎我去尝试了这个方法,但是依然没有效果

securerandom.source=file:/dev/./urandom 没有指定的话你的项目只会启动慢,但是不会像这样卡死在这里,我查阅了一下资料,没有指定urandom基本上最慢10分钟内也会正常启动起来,所以项目的问题并不是出在这里,于是乎为了探索一下我去查看了tomcat的源代码。

我们可以看到,图片中最后一条日志就是在这里输出出来的,然后一直到被catch捕获中间并没有日志输出,所以我们可以排除程序的线程并没有因为异常而中断,而是卡死在了中间的某个执行步骤上。

1417396-20220526230758208-497736328.png

 为了断定到底是卡在了哪里,我决定查看一下线程执行的堆栈的详细信息,我使用的工具是阿里的Arthas,下载好之后,我们启动Arthas后,然后输入dashboard,然后我就发现main居然一直是WATTING状态,他居然被挂起了

1417396-20220526231343145-358312875.png

然后我们执行thrad 1 查看main的堆栈信息,好家伙原来罪魁祸首在这里,C3P0阻塞卡死了,应该是连接池的参数没有写对导致的问题。

折腾了半天竟是因为这种错误。

1417396-20220526231455337-314692540.png

 最后为了先快速上线解决问题,直接更换了数据库连接池,换成了Druid.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK