使用軟件版本:WebLogic 9 MP3 操作系統:SUSE Linux 10 sp2
創建域慢啟動慢的特征:創建域到70%時,進程長時間等待(命令行創建時停止在100%處),創建域啟動Weblogic的時候也是長時間停止。
Weblogic在Linux下啟動慢的原因,發現從進程堆來看,線程掛在security相關的隨機數生成上面,是由於JDK的Bug(JDK從/dev/random讀取‘randomness’經常耗費10分鐘或者更長的時間),查詢了下相關資料,解決辦法可以有如下三種辦法:
1)較好的解決辦法: 在Weblogic啟動參數裡添加 “-
Djava.security.egd=file:/dev/./urandom” (/dev/urandom 無法啟動)
2)最差的解決辦法: 執行命令 mv /dev/random /dev/random.ORIG ; ln /dev/urandom /dev/random
將/dev/random 指向/dev/urandom
3)最好的解決辦法: 修改Linux上Weblogic使用的jdk $JAVA_HOME/jre/lib/security/java.security 文件
將securerandom.source=file:/dev/urandom 修改為
securerandom.source=file:/dev/./urandom
這樣可以解決任何一個域Weblogic啟動慢的問題。
此外由於Weblogic創建域的時候使用的JDK是自帶的jrockit,所以要解決WebLogic在Linux上創建域慢的問題,解決辦法如下: 修改Linux上Weblogic使用的jdk $JROCKIT_HOME/jre/lib/security/java.security 文件
將securerandom.source=file:/dev/urandom 修改為
securerandom.source=file:/dev/./urandom
由於Windows上對/dev/urandom實現機制不一樣,所以在Windows上不會出現上述為題。