Netty ThreadLocalRandom中缺少内附体的条件

Netty ThreadLocalRandom中缺少内附体的条件,netty,Netty,这里的任何人都可以帮助我们了解ThreadLocalRandom打印“未能在3秒内从SecureRandom生成种子。entrophy不足”警告消息的情况吗 我们能够在紧密循环中命中服务器时始终如一地触发警告。尽管有3s的停顿,但一切仍然正常,尽管我知道这已经解决了() 我们想修改我们的设置,以避免陷入这些情况。我对Netty代码库不是很熟悉,但是快速的grep和扫描会得出它似乎用于DefaultChannelId中的通道Id。如果为每个传入的请求分配这些信息,我可以看到这可能会耗尽本地的熵池。

这里的任何人都可以帮助我们了解ThreadLocalRandom打印“未能在3秒内从SecureRandom生成种子。entrophy不足”警告消息的情况吗

我们能够在紧密循环中命中服务器时始终如一地触发警告。尽管有3s的停顿,但一切仍然正常,尽管我知道这已经解决了()


我们想修改我们的设置,以避免陷入这些情况。我对Netty代码库不是很熟悉,但是快速的grep和扫描会得出它似乎用于
DefaultChannelId
中的通道Id。如果为每个传入的请求分配这些信息,我可以看到这可能会耗尽本地的熵池。如果是这种情况,我们可以为通道使用不同的id机制吗?

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

更新:

一个线程不需要超过8个字节的
SecureRandom
,但是虚拟机上的可用熵可能非常低。以下是您可以测试它的方法:

cat /proc/sys/kernel/random/entropy_avail
这一页让我确信我应该一直使用
/dev/uradom


有许多选项可以增加
/dev/random
停止阻塞的熵估计值,如or,但最终
/dev/random
/dev/urandom
之间的区别是非常人为的,因此您最好使用
/dev/urandom

种子生成只执行一次。一旦获得种子,它就不会使用
SecureRandom
,因此在同一过程中,您不会多次看到该警告消息。如果不是这样,请提交一个问题。SO帖子中的建议是我们在生成这些错误的脚本中使用的。对于这个问题,Netty提出了一个相应的问题:是否有一种简单的增加熵的方法,当你不控制代码时,即当使用Play Framework时?最简单的选择是
sudo mv/dev/random/dev/random_-bak;sudo ln-s/dev/urandom/dev/random