Java由于生成随机内容被阻塞

53 篇文章 0 订阅
35 篇文章 1 订阅

VM环境下的Linux平台上,Java程序启动速度可能会很慢,表现为启动过程中日志突然停止输出,暂停执行。根据具体的环境,可能稍等会儿后,一切恢复正常,日志开始继续输出,程序继续执行,也可能等待很长的时间也没有结果。

导致该问题的原因是Java程序对Linux平台/dev/random的调用,该调用为阻塞调用,所以如果没有足够的entropy让该调用返回,Java程序将会一直wait

解决方法:

  1. 安装haveged,Ubuntu上,可以执行
apt-get install haveged
  1. 改用非阻塞的/dev/urandom
    可以通过启动JVM时带参数修改
-DJava.security.egd=file:/dev/./urandom

或者
直接修改java.security配置,把$JAVA_PATH/jre/lib/security/java.security配置文件中的securerandom.source内容修改为

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

参考:what-do-i-need-to-configure-to-make-sure-my-software-uses-dev-urandom

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值