我在 MacOSX Mavericks DP3 上运行带有 jdk7 的 tomcat7。一切顺利,启动仅需 500 毫秒。但突然,它减慢到 35 秒。
日志消息显示 SecureRandom 是根本原因。感谢谷歌,我发现这是一个 jre 错误,并使用以下代码进行验证:
import java.security.SecureRandom;
class JRand {
public static void main(String args[]) throws Exception {
System.out.println("Ok: " +
SecureRandom.getInstance("SHA1PRNG").nextLong());
}
}
是的。最简单的代码也需要 35 秒。但似乎所有这些相关的解决方案都不适合我。/dev/random 和 /dev/urandom 在 Mac 上都不是块设备。
cat /dev/random | hexdump -C
输出非常快!
当切换回 jre6 时,生成随机数非常快。下载最新的jdk8-ea,问题依旧。
事实上,不仅tomcat明显减速,Netbeans、glassfish都受到影响。在挣扎了几个小时后,我终于放弃了。
今天早上,当我来到办公室,插上以太网,你猜怎么着?它恢复了!
所以我的问题是,后面会发生什么?这真的很奇怪。
谢谢。