服务器重启后首次访问一直比较慢,今日在日志中发现有一行打印,显示耗时竟然有 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
本文来源:程序之心,转载请注明出处!
最新内容
© 2016 - 2024 chengxuzhixin.com All Rights Reserved.