问题描述
在一台新机器部署服务时发现启动耗时很长,同样的war包在另一台机器却速度很快
解决方法
-
修改JVM参数:
vim $JAVA_HOME/jre/lib/security/java.security #securerandom.source=file:/dev/random 修改为: securerandom.source=file:/dev/./urandom
-
修改Tomcat启动参数:
在catalina.sh中添加:-Djava.security.egd=file:/dev/./urandom。 重新启动tomcat 即可
究极方法
增大/dev/random的熵池(问题的原因是由于熵池不够大,所以增大它是最彻底的方法)
Linux中的随机数可以从两个特殊的文件中产生:
/dev/urandom:非阻塞的随机数产生器(unlocked),他会反复使用熵池中的数据来产生伪随机数,如果不能产生新的随机数时,不会阻塞。因此随机数产生效果不太好。
/dev/random:阻塞随机数产生器(locked),他会反复使用熵池中的数据来产生伪随机数,如果不能产生新的随机数时,会阻塞,直到能产生新的随机数才返回。因此随机效果好。