jvm产生取随机数在Linux下性能低下问题的解决方案

如果你有以下的现象,可以考虑是这个问题:

  1. 在linux下,如果你使用 Java.security 包中的方法(比如SecureKeyFactory.generateSecret()),会发现它出奇的慢,有时候甚至是半僵死在那里。
  2. HTTPS加密时,建立连接有时候比较慢
  3. 建立oracle数据库连接比较慢
  4. tomcat启动慢

有两个方法解决这个问题

1. 编辑${java.home}/jre/lib/security/java.security,找到securerandom.source,把它的值改成(默认值file:/dev/urandom,效果很差)

securerandom.source=file:/dev/./urandom

请注意:这个增加./的方式,是因为jdk有bug(详情见这里:http://wiki.apache.org/tomcat/HowTo/FasterStartUp)(jdk bug :http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6521844 )

java_random_slow

2. 安装rng-tools

[root@linux ~]# yum install rng-tools

[root@linux ~]# echo ‘EXTRAOPTIONS=”-i -o /dev/random -r /dev/urandom -t 10 -W 2048″‘ > /etc/sysconfig/rngd

[root@linux ~]# chkconfig rngd on

[root@linux ~]# service rngd restart

参考:http://development.adaptris.com/~lchan/blog/2012/06/15/slow-java-crypto-performance-on-linux/

 

扩展阅读:

/dev/urandom 不得不说的故事

http://www.tuicool.com/articles/2qMZZvV   (本站备份 http://blog.kyletang.work/2016/07/13/random_urandom_about/ )

JVM上的随机数与熵池策略

http://ifeve.com/jvm-random-and-entropy-source/ 

发表评论

电子邮件地址不会被公开。 必填项已用*标注