【发布时间】:2011-11-25 04:07:26
【问题描述】:
我的问题是 Tomcat 7 在启动时非常慢。我在日志文件中找到了这个:
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [12,367] milliseconds.
当然,安全性很重要,但在我的开发机器上并不重要。我完全可以使用标准的快速随机数生成器。所以我不需要这种慢得离谱的 SecureRandom 实现。
问题是:如何禁用它?正在搜索解决方案,但只找到了一些关于 randomClass 属性的弃用信息,该属性可以设置为 java.util.Random。我还发现这个属性现在在 Tomcat 7 中似乎被命名为 secureRandomClass。我试图将它设置为 java.util.Random 但这失败了,因为 Tomcat 7 将对象转换为 java.util.SecureRandom (并且还记录了指定的类必须扩展 java.util.SecureRandom,因此不能再使用 java.util.Random。)
那么我怎样才能摆脱这个非常缓慢的随机数生成器启动,以便我的开发 tomcat 尽快启动/重新启动?
【问题讨论】:
-
@SeanOwen 不是真的,因为那个问题是关于
SecureRandom本身,而不是如何配置 Tomcat 以使用不同的。不过This one 可能是。 -
@Dave Newton:不幸的是,这个解决方案对我不起作用。我使用的是 Linux,securerandom.source 已经指向 /dev/urandom(默认设置),我不使用 APR,所以这不是 openssl 问题。
-
12 秒真的“非常慢”吗? 12 秒这样的问题,你能负担得起花这么多时间来调查它吗?
-
@EJP 严重的是 12 秒是很长的时间,而 40 秒是荒谬的,会让我发疯。你有没有重启过你的应用程序?我使用 JRebel,我的安全随机只需要 4 秒,但如果我不得不等待 40 秒,因为每次代码更改的安全随机都会惹恼我。如果重启时间不是那么关键,那么像 JRebel 这样的公司为什么要赚钱?