weblogic启动慢一般先看setDomainEnv.sh中分配给JVM的内存大小,如果分配足够(没部应用一般也要1G以上)那么再用free -g看本机剩余内存是否充足。如果都没问题还是比一般机器启动慢,那么有很大可能是随机数生成阻塞问题。
阻塞问题造成的weblogic启动慢主要表现为,平时一般十多秒就能成功的控制台和受控server此时需要数分钟才能完成启动,且本来一下完成登录的控制台页面也要几分钟才能显示出来。
weblogic启动需要随机数,生成随机数需要种子,而种子来源由securerandom.source指定,securerandom.source默认是file:/dev/random。在实际工作中/dev/random返回熵池中的噪声的随机字节,最重要的一点是如果熵池中噪声数据不足甚至为空那么/dev/random会先等待噪声数据的收集,这通常会耗不少时间;也就是说/dev/random生成随机数种子是阻塞的。
所以如果有一个非阻塞随机数种子生成器那么问题就解决了,而/dev/urandom正是可用的非阻塞随机数种子生成器。所以解决方法是:
修改$JAVA_HOME/jre/lib/security/java.security文件中的securerandom.source值为/dev/./urandom
securerandom.source=file:/dev/./urandom
Tomcat等中间件也有可能因为同样的原因而启动慢,也同样处理即可。但是对于Tomcat要注意,如果配置了JRE_HOME(非JDK下的JRE)那么系统会使用JRE来启动Tomcat,所以要修改的是$JRE_HOME下的文件而不是$JAVA_HOME下的jre内的文件。
参考: