SpringBoot +SpringSecurity项目重新启动的时候,内置tomcat重新加载配置,用户第一次登陆的时候,接口特别慢,甚至超时。
日志显示一条WARN级别日志值得注意:org.apache.catalina.util.SessionIdGeneratorBase - Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [19,665] milliseconds.
问题说明
Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID。
SHA1PRNG是基于SHA-1算法的伪随机数生成器,用来生成保密性较强的伪随机数。
在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。
1)如果 java.security.egd 属性或 securerandom.source 属性指定的是 file:/dev/random 或 file:/dev/urandom ,那么JVM会使用本地种子产生器NativeSeedGenerator,它会调用super()方法,即调用SeedGenerator.URLSeedGenerator(/dev/random)方法进行初始化。
2)如果 java.security.egd 属性或 securerandom.source 属性指定的是其它已存在的URL,那么会调用SeedGenerator.URLSeedGenerator(url)方法进行初始化。
解决方案:
修改 jdk 中 /jre/lib/java.security文件
怎么找到linux中jdk安装路径呢?
答案:whereis java命令