gpt4 book ai didi

netty - ThreadLocalRandom 中缺乏内生素的条件

转载 作者:行者123 更新时间:2023-12-01 09:35:34 28 4
gpt4 key购买 nike

这里的任何人都可以帮助阐明“无法在 3 秒内从 SecureRandom 生成种子。没有足够的熵”警告消息从 ThreadLocalRandom 打印的条件吗?

我们能够在紧密循环中访问服务器时始终触发警告。一切仍然有效,尽管有 3 秒的暂停,但我知道 已解决(https://github.com/netty/netty/commit/3921f7c88a8db4feb45df89b0b28b3a9898993ab)。

我们想修改我们的设置以避免陷入这些情况。我对 Netty 代码库不是很熟悉,但快速 grep 和扫描发现它似乎用于 DefaultChannelId 中的 channel ID。如果为每个传入请求分配这些,我可以看到这将如何耗尽本地熵池。如果是这样,我们可以为 channel 使用不同的 ID 机制吗?

最佳答案

如果您有很多工作线程,则可能会发生这种情况,并且在开始时每个请求都会命中不同的工作线程,导致它从 SecureRandom 请求新的种子。

更新:

SecureRandom 中一个线程不需要超过 8 个字节,但 VM 上的可用熵可能非常低。您可以通过以下方式对其进行测试:

cat /proc/sys/kernel/random/entropy_avail

这是一个让我相信我应该始终使用 /dev/urandom 的页面:

http://www.2uo.de/myths-about-urandom/

有很多选项可以增加 /dev/random 停止阻塞的熵估计,比如 havegedvirtio-rng , 但最后/dev/random/dev/urandom 之间的区别是很人为的,所以你还不如使用/dev/urandom.

关于netty - ThreadLocalRandom 中缺乏内生素的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28173570/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com