由于阻塞的 SeedGenerator 线程,Linux 上的 ColdFusion 11 服务器运行缓慢

ColdFusion 11 server on Linux slowness due to blocked SeedGenerator thread

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

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

我检查了 OS 随机数池并且 /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)

折腾了一天,终于想出了一个临时的解决方案,性能提升了很多。将“-Djava.security.egd=file:/dev/./urandom”添加到 jvm 将指示 Tomcat 使用 /dev/urandom 而不是默认的 /dev/random。请注意,非阻塞 /dev/urandom 不如 /dev/random 安全。如果你真的想要 SSL/SSH 左右的高安全性,你需要用一些随机数生成硬件来增强系统。

有关更多故障排除说明,请参阅 here