由于SeedGenerator线程被阻止,Linux上的ColdFusion 11服务器速度缓慢



我在Redhat Linux服务器上安装了ColdFusion 11。有时,我能看到一些缓慢。当它很慢的时候,我可以看到总是有一个阻塞的SeedGenerator线程在等待。如果有人能提供如何解决这个问题的提示,我们将不胜感激。以下是一些相关数据:

  • 服务器:Linux 2.6.32-504.1.3.el6.x86_64#1 SMP美国东部时间2014年10月31日星期五11:37:10 x86_64 x86_64 GNU/Linux
  • 物理内存:6GB
  • CPU:Intel(R)Xeon(R)CPU X5560@2.80GHz
  • java:coldfusion在1.7.0_55-b13中构建
  • jvm:-Xms256m-Xmx2048m-XX:MaxPermSize=192m-Dcoldfusion.jsafe.defaultalgo=FIPS186随机

我还启用了JMXremote。JConsole表明,堆内存的峰值使用量为700MB,峰值置换量为120MB。Linux top命令指示高CPU使用率,Jconsole显示SeedGenerator线程不时使用99%的CPU。

我检查了操作系统随机数池,/proc/sys/kernel/random/entropy_avail一直至少有120(大多数时候这个数字在120到190之间)。我甚至使用rngd来增加可用的随机位,但这没有帮助。我还删除了/dev/random,并将/dev/urandom链接到它,但没有任何改进。

SeedGenerator线程的堆栈跟踪是:

java.lang.Object.wait(Native Method)  
java.lang.Object.wait(Object.java:503)  
sun.security.provider.SeedGenerator$ThreadedSeedGenerator.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

经过一天的努力,我终于想出了一个临时解决方案,大大提高了性能。在jvm中添加"-Djava.security.egd=file:/dev/./urandom"将指示Tomcat使用/dev/urandom,而不是默认的/dev/random。请注意,非阻塞/dev/urandom的安全性不如/dev/random。如果您真的想要SSL/SSH的高安全性,那么您需要用一些随机数生成硬件来增强系统。

有关更多疑难解答说明,请参阅此处。

最新更新