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

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

君子曰:学不可以已。
《黑匣子思维》
“黑匣子思维”是一种记录和审视失败并从中吸取经验的积极态度。不惧怕面对失败,反而视失败为学习的途径。不会否认过失、推诿责任和想方设法脱身,而会把失败作为样本深入研究。 缺乏从失败中学习的态度、勇气和能力,会对个体或行业带来严重危害。千方百计避免犯错并不是我们的目标,学习如何聪明而有意义地犯错,将每一次失败作为测试我们成绩的机会。
发表感想

© 2016 - 2024 chengxuzhixin.com All Rights Reserved.

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