Tomcat或应用启动卡在“INFO:Deploying web application directory......”

Posted V主宰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat或应用启动卡在“INFO:Deploying web application directory......”相关的知识,希望对你有一定的参考价值。

每一次困难,都是一次机会;每一次坚持,都是一次蜕变!

——致奋斗中的我们


在阿里云主机上部署了一个Web应用,但启动发现异常的慢,比在本地Window环境下部署耗时相差数倍。以为是项目问题,于是删掉了部署的应用,只留下Tomcat自带的example,manager等启动了一把,发现依旧特别慢,并且也是卡在了部署应用位置。仔细查看日志会发现这样几个提示:

Tomcat或应用启动卡在“INFO:Deploying web application directory......”


经百度了解到,SecureRandom为Java安全伪随机数发生器,并且会有random和urandom两种设备,其中random阻塞,安全性高但需要时间间隔生成随机数;而urandom非阻塞(unblocked random),但安全性稍低一些。上面应用启动卡住就是因为jdk默认使用了比较安全的阻塞的发生器random。通过如下命令可以查看具体设备信息:

[vmaster@vm-1 ~]$ ll /dev |grep random

crw-rw-rw- 1 root root      1,   8 Jul 25 16:02 random

crw-rw-rw- 1 root root      1,   9 Jul 25 16:02 urandom


可以通过如下命令测试你的系统是否会出现伪随机数等待的现象,通过测试果然如此,random第一次调用会很快返回,但再次调用便会阻塞等待很久才会返回。而urandom则会立即返回。

head -n 1 /dev/random

head -n 1 /dev/urandom


既然找到了原因,Tomcat或应用启动是由于随机数发生器阻塞造成,那我们将其修改为非阻塞发生器即可。修改方式有两种,单应用临时修改和全局永久修改:


方法1:启动参数单应用临时修改

为启动增加启动参数,如Tomcat则在catalina.sh中追加如下启动参数:

-Djava.security.egd=file:/dev/urandom


方法2:配置文件永久全局修改

进入到$JAVA_HOME/jre/lib/security目录下,使用VI或其它文本编辑打开java.security文件,将securerandom.source=file:/dev/random

修改为

securerandom.source=file:/dev/urandom


修改完成,再次启动,发现依旧如此慢,有些朋友甚至会发现,这里配置本来就是urandom,难道不是随机数发生器阻塞的原因?或者这里的配置未生效,需要重启服务器生效?


不,这或许是Bug,需要通过查看JDK源代码方能确认。这里提供解决办法,具体原因及源码分析请看下一篇博文 “Linux环境下Java伪随机数发生器设备配置不生效原因剖析(urandom依旧阻塞)


解决方法:将上面配置里的file:/dev/urandom修改为如下几种形式中的一种:

1、file:///dev/urandom

2、file:/dev/./urandom

3、file:/dev/../dev/urandom

...

...


还有很多配置方式这里不一一罗列,只要保证最终资源仍然是file:/dev/urandom这个原则即可



友情链接:http://blog.csdn.net/njchenyi/article/details/46641141




               
               

扫扫加关注,小Ⅴ帮带路!

以上是关于Tomcat或应用启动卡在“INFO:Deploying web application directory......”的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat启动时卡在 INFO HostConfig.deployDirectory Deploy

tomcat启动时非常慢,启动时 一直卡在Root WebApplicationContext: initialization completed

在线上环境启动tomcat没有报错,卡在 `ConnectionProviderFactory: Initializing connection provider` 处。

Tomcat启动时卡在“INFO: Deploying web application directory ......”的解决方法

启动tomcat时,一直卡在Deploying web application directory这块的解决方案

JDK 11,Tomcat卡在Deploying web application directory