springboot应用启动过慢问题

最近在测试环境部署了一套springboot程序,程序启动后浏览器打开页面会非常慢,查看日志有如下信息

WARN  o.a.c.u.SessionIdGeneratorBase - Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [95,445] milliseconds.

tomcat的文档里有个概念叫Entropy Source(熵源),在启动时会调用SecureRandom类来生成随机数。如果用于初始化SecureRandom的熵源是个短熵(熵不够用),那么就会报文章开头说的warning了。

jdk默认配置的熵源是file:/dev/random,通过如下命令查看

cat $JAVA_HOME/jre/lib/security/java.security | grep securerandom

所以程序启动后SecureRandom类会读取/dev/random以获取随机序列,这是一个同步操作。当熵池中没有足够的熵时,读取/dev/random就会造成阻塞,直到收集到了足够的熵,程序才会继续往下进行。此处用了95秒。

解决办法就是改用为非阻塞的熵源/dev/./urandom,可以修改jdk配置文件,也可以在程序启动时候指定。

此处我在程序启动时候指定,具体方式为:

java -Djava.security.egd=file:/dev/./urandom 

修改启动脚本后再次启动程序即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值