SpringBoot项目中访问controller接口报Creation of SecureRandom instance for session ID generation using
bug原因
今天测试人员在测试的时候发现获取图形验证码接口在访问时候加载速度非常慢,要一两分钟才能加载出来,看日志的时候发现报了下边的一段警告日志:
1 | 2019-01-24 09:36:33.654 [http-nio-8080-exec-5] WARN org.apache.catalina.util.SessionIdGeneratorBase:180 - Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [106,771] milliseconds. |
通过搜索发现原因如下
1 | linux默认的SecureRandom实现方式是非常慢的NativePRNG,而在Windows上的默认实现是SHA1PRNG,你也可以在Linux上指定使用该方式。 |
解决办法
在 JVM 环境中解决(我在项目中使用的是这种方式)
打开$JAVA_PATH/jre/lib/security/java.security这个文件找到修改该securerandom.source的值1
2
3
4
5修改前
securerandom.source=file:/dev/random
修改后
securerandom.source=file:/dev/./urandom如果为SpringBoot项目可以在执行jar启动命令中添加配置
1
2
3
4
5修改前
java -jar pc.jar
修改后
java -jar -Djava.security.egd=file:/dev/./urandom pc.jar在Tomcat环境中解决
1
2可以通过配置 JRE 使用非阻塞的 Entropy Source:
在 catalina.sh 中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。
作者: 只是学习学习
邮箱: fengzxia1000@163.com
原文地址: https://fengzxia.gitee.io/posts/56379dd4.html
版权声明: 商业转载请联系作者获得授权,非商业转载请注明出处。