由于SecureRandom,在Tomcat 7.0.57上启动缓慢

时间:2015-01-28 20:28:40

标签: java tomcat7

我在CentOS 6.6 32位和openJDK7上使用Tomcat 7.0.57。 当我在服务器(生产环境)上启动14个不同的Tomcat实例时,其中很多都需要太多时间才能启动。

这是启动日志的一部分,它告诉我一直在哪些地方

Jan 28, 2015 2:49:41 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [199,620] milliseconds.

这个问题的最佳做法/解决方案是什么?

谢谢!

5 个答案:

答案 0 :(得分:16)

我面临同样issue的tomcat太慢而无法启动。我跟着this article on DigitalOcean并安装了hasged而不是使用urandom。

hasged是一种不会在安全方面妥协的解决方案。

  

hasged允许根据变化生成随机性   处理器上的代码执行时间。因为它几乎不可能   一段代码可以执行相同的准确时间,即使在   相同硬件上的相同环境,运行单个的时间   或多个程序应该适合播种随机源。该   加速实施种子系统的随机源(通常是   / dev / random)使用处理器时间戳计数器的差异   (TSC)重复执行循环后

如何安装hasged

按照本文中的步骤操作。 https://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-haveged

我发布了here

答案 1 :(得分:11)

安全随机调用可能会阻塞,因为没有足够的熵可以在/ dev / random中提供它们。

如果你有行

securerandom.source=file:/dev/random

在/jre/lib/security/java.security中,将此更改为urandom可能会改进(虽然这可能已经是默认设置)。

或者,有一些关于如何在这里喂池的建议

https://security.stackexchange.com/questions/89/feeding-dev-random-entropy-pool

答案 2 :(得分:0)

我更改了/jre/lib/security/java.security,如下: securerandom.source =文件是:/ dev /./ urandom的

答案 3 :(得分:0)

@KCD的上述回答几乎对我有用,我需要对其进行一些按摩-如下:

1)我的tomcat是tomcat7,所以我在fastersecurerandom.properties目录中创建了/etc/tomcat7文件,

2)根据another page,我不得不更改fastersecurerandom.properties的内容 来自

securerandom.source=file:/dev/urandom

securerandom.source=file:/dev/./urandom

3)我没有tomcat.conf文件,因此我将/etc/init.d/tomcat7(tomcat的启动脚本-我知道)添加到了catalina_sh() {

JAVA_OPTS="$JAVA_OPTS -Djava.security.properties=/etc/tomcat7/fastersecurerandom.properties"

请注意,我也在此处将7添加到了tomcat

值得进行ps -deaf | grep tomcat的操作是首先确认新的-D设置已通过命令,还需要检查它是否指向正确的文件,以及该文件是否那里。这是我注意到丢失的7的时候。

我使用Java 1.7和Ubuntu 14.04.1。

答案 4 :(得分:0)

至少直接在Java 8中,它没有直接更改文件java.security,而是提供了支持以下系统属性的文档:

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

在Tomcat的上下文中,可用于创建包含以下行的文件bin/setenv.sh

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