Java奇技淫巧-JDK在Linux下的陷阱

648 阅读1分钟

Linux中的随机数可以从两个特殊的文件中产生,一个是/dev/urandom,另外一个是/dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。
JDK在linux上默认使用的随机数策略是/dev/random。在很多java服务上,在启动的时候会去生成一个随机数。由于JDK默认的使用/dev/random会导致其生成随机数会出现耗时几分钟的情况。鄙人被坑过2次。每次都苦苦寻找原因,打断点,将此记录一下。有2种方式可以将这个问题解决。


服务指定生成策略

加上jvm参数:-Djava.security.egd=file:/dev/./urandom来指定生成策略。建议使用此种方式

修改java.security文件

找到服务启动指定的JAVA_HOME环境下jre/lib/security/java.security这个文件,将 securerandom.source=file:/dev/urandom替换成securerandom.source=file:/dev/./urandom即可。