背景:
springboot项目在本地测试时用户登录就很快,在springboot项目放到服务器上使用java -jar运行后,发现第一次用户登录时,需要好长时间(3分钟以上)或者要登录好多次才能登录成功。于是查看了日志和网上查找资料。
根本原因是
有两种解决方案:
- 在Tomcat环境中解决:
可以通过配置 JRE 使用非阻塞的 Entropy Source:
在 catalina.sh 中加入这么一行:-Djava.security.egd=file:/dev/./urandom
即可。 - 在 JVM 环境中解决:
打开 $JAVA_PATH/jre/lib/security/java.security 这个文件,找到下面的内容:
securerandom.source=file:/dev/random
替换成:
securerandom.source=file:/dev/./urandom
这里值为何要在 dev 和 random 之间加一个点呢?有的认为是jdk的bug
在 JDK 的 java.security 文件里,如下: