#Tomcat 启动卡在部署项目时(linux)

找到

1
```securerandom.source=file:/dev/./urandom

这时候根据修改内容就可以查到因为此原因不仅可以造成tomcat卡住,也会造成weblogic启动缓慢,
linux或者部分unix系统提供随机数设备是/dev/random/dev/urandom,两个有区别,
urandom安全性没有random高,但random需要时间间隔生成随机数。jdk默认调用random。
再后来,终于在weblogic的官方文档中 Monitoring and Troubleshooting 找到了 Avoiding JVM Delays Caused ByRandom Number Generation 这样一个标题。摘录如下:

The library used for randomnumber generation in Sun’s JVM relies on /dev/random by default for UNIXplatforms. This can potentially block the Oracle WebLogic CommunicationServices process because on some operating systems /dev/random waits for acertain amount of “noise” to be generated on the host machine beforereturning a result. Although /dev/random is more secure, Oracle recommendsusing /dev/urandom if the default JVM configuration delays Oracle WebLogicCommunication Services startup.

To determine if your operatingsystem exhibits this behavior, try displaying a portion of the file from ashell prompt:

head -n 1 /dev/random
Open the$JAVA_HOME/jre/lib/security/java.security file in a text editor.

Change the line:

securerandom.source=file:/dev/random
to read:

securerandom.source=file:/dev/urandom
Save your change and exit thetext editor.
其中说到:可通过 head -n 1 /devrandom 查看是否你的系统会出现伪随机数提供等待。OK就这个,试了一下,果然,在服务器第一次启动后,这个可以快速提供一个值,但当再次调用时发生等待。

解决办法:

永久:oracle 说修改$JAVA_HOME/jre/lib/security/java.security文件,替换securerandom.source=file:/dev/randomsecurerandom.source=file:/dev/urandom。对所有使用JVM的应用生效。(这个永久的方法,这里面有个问题,就是设置时候实际应该设置为securerandom.source=file:/dev/./urandom,否则不生效)

DOMAIN临时:修改startWeblogic.sh文件,JAVA_OPTIONS=”${SAVE_JAVA_OPTIONS}-Djava.security.egd=file:/dev/./urandom”

后继的SecureRandom 测试学习

编写JAVA类如下,运行测试,第一次正常,第二次等待,重启服务器后第一次又正常。启动加入参数-Djava.security.egd=file:/dev/./urandom 正常

来自[http://blog.csdn.net/njchenyi/article/details/46641141](http://blog.csdn.net/njchenyi/article/details/46641141)

原文地址:http://blog.csdn.net/njchenyi/article/details/46641141