tomcat启动时间过长的问题

阿里云下的服务器安装jdk1.8和tomcat之后出现了一个问题,初次运行tomcat没有问题,可以正常访问tomcat首页,但是关闭之后再重启就发现tomcat首页刷不出来。而且再次关闭之后还报错了。

关闭tomcat时的报错图片

报错信息上显示Tomcat may not be running,说明tomcat还没有启动,说明之前开启tomcat就出现问题了。

方案一:

官方的文档里有这个问题的解释:修改$JAVA_HOME/jre/lib/security/java.security文件,替换securerandom.source=file:/dev/random为: file:/dev/urandom。对所有使用JVM的应用生效。(实际修改为:securerandom.source=file:/dev/./urandom)。修改之后重启tomcat就很快了。

关于这个random和urandom,这个是linux的提供的随机伪设备,提供永不为空的随机字节数据流,许多加密解密程序需要用到它们提供的随机数。它们的区别在于:random 依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用。这也就是tomcat启动变慢的原因;而urandom不依赖系统的中断,也就不会造成进程忙等待,但是数据的随机性也不高。

可以通过od转化为16进制后查看生成的随机数据:

urandom生成的随机数

但是使用random生成随机数的时候一直刷不出来:

random生成随机数很慢

方案二:

random是依赖于系统中断产生的随机数,因此可以使用外部进程产生中断,增加产生随机数的速度,安装rng-tools这个软件可以增加产生随机数的速度。

yum install rng-tools

systemctl start rngd // 开启服务

然后再使用random生成随机数:

random生成随机数很快

这次生成随机数就很快了,安装了rng-tools之后就直接可以使用random生成随机数,而不需要去修改$JAVA_HOME/jre/lib/security/java.security中的生成随机数的方式了。

posted @ 2017-12-05 22:27  Archieyao  阅读(7606)  评论(0编辑  收藏  举报