优化tomcat启动时SessionIdGeneratorBase.createSecureRandom过慢的问题

本文讨论了ApacheTomcat中SecureRandom在会话ID生成中的性能问题,特别关注Linux系统中/dev/random的瓶颈,并提供了使用/dev/urandom作为非阻塞熵源的解决方案。通过调整JVM参数可以提升性能,但需注意对安全性的潜在影响。
摘要由CSDN通过智能技术生成

Apache Tomcat会话ID生成器的性能优化。

org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [168,588] milliseconds.

这句日志来自org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom,指出了创建SecureRandom实例用于会话ID生成使用了大量的时间。

这个问题通常与系统熵源(entropy source)有关,特别是在某些Linux系统中,SecureRandom标准实现使用 /dev/random 作为熵源。然而,在某些情况下,/dev/random 可能无法快速地提供足够的随机数据,导致生成随机数慢。

一个常见的解决方案是修改JVM参数,使其使用非阻塞熵源 /dev/urandom 来生成安全随机数。你可以通过添加以下JVM参数来实现:

-Djava.security.egd=file:/dev/./urandom

在Tomcat启动脚本中(如setenv.sh或catalina.sh)添加以上参数即可。

注意:虽然/dev/urandom不会阻塞,并且在大多数情况下都足够安全,但它可能提供比/dev/random稍低的随机性。对于大多数应用程序来说,这种差异并不重要;

注:如果你正在开发需要极高安全等级的应用(例如加密应用),则可能需要考虑其他策略。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值