tomcat初始化慢问题

2021-10-17 From 程序之心 By 程序之心

服务器重启后首次访问一直比较慢,今日在日志中发现有一行打印,显示耗时竟然有 8 秒多。

org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
警告: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [8789] milliseconds.

SHA1PRNG 算法是基于 SHA-1 算法实现且保密性较强的伪随机数生成器。随机数的产生依赖熵源,默认是阻塞型的 /dev/random 熵源。

/dev/random 只返回熵池中噪声的随机字节,非常适合那些需要非常高质量随机性的场景,比如一次性的支付或生成密钥的场景。当熵池为空时,来自 /dev/random 的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。这么做的目的是成为一个密码安全的伪随机数发生器,熵池要有尽可能大的输出。

因此 Tomcat 会阻塞一段时间,换成非阻塞的 /dev/urandom 的熵源就可以了。更换方法是在启动参数中加上 -Djava.security.egd=file:/dev/urandom。更换后,耗时缩减到 200ms 左右。

java -jar xxx.jar -Djava.security.egd=file:/dev/urandom

本文来源:程序之心,转载请注明出处!

本文地址:https://chengxuzhixin.com/blog/article/300305.html

发表感想

© 2016 - 2022 chengxuzhixin.com All Rights Reserved.

浙ICP备2021034854号-1    浙公网安备 33011002016107号