在我第一次开发项目时候,用的是师兄的服务器,当时就有这个问题。放上他的服务器启动之后,访问接口需要等个三五分钟才能访问,而放到我的服务器就不会,然后就迁移到我的服务器解决了。
没想到,苍天饶过谁!今天部署个项目,结果到我的服务器也出现这种问题了。然后巴拉巴拉去找办法KO这个问题,毕竟我还是个穷学生,换不起服务器啊。
先说解决方案:
进入你服务器的jdk安装目录的 cd .../jdk1.8.0_212/jre/lib/security
修改文件 vim java.security
将117行securerandom.source=file:/dev/random 改成urandom
保存即可
解析一下:
这其实并不是Springboot的问题,而是tomcat的问题,任何采用tomcat服务器的时候都可能出现这个问题。
首先,在apache-tomcat官方文档里面提到了一些启动时的优化项,其中一项是关于随机数生成时,采用的“熵源”(entropy source)的策略。
他提到tomcat7的session id的生成主要通过java.security.SecureRandom生成随机数来实现,随机数算法使用的是”SHA1PRNG”
wiki中有比较详细的描述,先看/dev/random :
在读取时,/dev/random设备会返回小于熵池噪声总数