我在MacOSX Mavericks DP3上運行帶有jdk7的tomcat7。 一切順利,啓動只需要500毫秒。 但突然,它減慢到35秒。java7在MacOSX上的SecureRandom性能
日誌消息顯示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秒。 但似乎所有這些相關解決方案都不適合我。 在Mac上,/ dev/random和/ dev/urandom都不是塊設備。
cat /dev/random | hexdump -C
輸出非常快!
當切換回jre6時,生成隨機數的速度非常快。 下載最新的jdk8-ea,問題依然存在。
事實上,不僅tomcat顯着下降,Netbeans,glassfish都受到影響。 經過幾個小時的掙扎後,我終於放棄了。
今天早上我上班的時候插上了以太網,猜怎麼着? 它恢復了!
所以我的問題是,後面發生了什麼?這真的很奇怪。
謝謝。
現在它又來了。 輪廓工具顯示它的調用時阻止: java.net.Inet6AddressImpl.lookupAllHostAddr(主機名)從java.net.InetAddress.getLocalHost () :'( – outersky
它是一個本地方法。 – outersky