当前项目一直使用jenkins进行构建发布,发现正常情况下构建时间基本上都维持在1min~2min之间;但是系统启动相对来说却有点慢的多了,经过多次启动日志查看排查发现耗时最长的时间是:
05-Mar-2021 17:16:21.919 WARNING [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [31,760] milliseconds.
在网上查找资料后确定,发现由于tomcat的session id的生成主要通过java.security.SecureRandom生成随机数来实现,随机数算法使用的是”SHA1PRNG”。在sun/oracle的jdk里,这个算法的提供者在底层依赖到操作系统提供的随机数据,在linux上,与之相关的是/dev/random和/dev/urandom。
解决方法
尝试网上提供的方法,修改jdk的配置$JAVA_HOME/jre/lib/security/java.security文件将securerandom.source=file:/dev/random
修改如下
securerandom.source=file:/dev/random
修改为:
securerandom.source=file:/dev/./urandom
之后保存重启项目,再次查看启动日志,发现现在启动时间已经比较快了~
这样一轮操作下来,tomcat构建耗时的问题终于解决了