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