我在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.
这个问题的最佳做法/解决方案是什么?
谢谢!
答案 0 :(得分:16)
我面临同样issue的tomcat太慢而无法启动。我跟着this article on DigitalOcean并安装了hasged而不是使用urandom。
hasged允许根据变化生成随机性 处理器上的代码执行时间。因为它几乎不可能 一段代码可以执行相同的准确时间,即使在 相同硬件上的相同环境,运行单个的时间 或多个程序应该适合播种随机源。该 加速实施种子系统的随机源(通常是 / dev / random)使用处理器时间戳计数器的差异 (TSC)重复执行循环后
我发布了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