继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

cenos7 jdk8 tomcat启动随机策略问题

时间丶思考
关注TA
已关注
手记 7
粉丝 26
获赞 340

jdk的配置文件中,使用securerandom.source设置了熵源:

cat /usr/java/jdk1.8.0_121/jre/lib/security/java.security

securerandom.source=file:/dev/random

可以看到默认值是:/dev/random。
所以程序启动后SecureRandom类会读取/dev/random以获取随机序列,这是一个同步操作。当熵池(entropy pool) 中没有足够的熵时,读取/dev/random就会造成阻塞,直到收集到了足够的熵,程序才会继续往下进行。
解决方法是修改成非阻塞的熵源/dev/urandom。
打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到:

securerandom.source=file:/dev/random

替换成

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

至于为什么是/dev/./urandom,而不是/dev/urandom,这源于java的一个bug。大意是/dev/urandom在某些情况下可能还是最终会转换成调用/dev/random。所以为了保险起见,还是使用/dev/./urandom吧!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP