0

我们有一个在 Solaris 上运行的 Java 应用程序,它与 Oracle 建立连接并检查数据库以执行工作,它运行得很好。我们尝试在独立的 Fedora 系统上运行相同的代码,它的性能也很好。但是,当我们将它移到 Fedora VMWare 虚拟机上的主目录时,应用程序可能需要5 分钟以上的时间才能连接到数据库。它最终确实建立了联系 - 它只是蜗牛缓慢。我们怀疑这是某个地方的配置问题,但找不到。据我们所知,这两个 Fedora 机器具有几乎相同的配置。有没有人遇到过这个问题?如果是这样,你是如何绕过它的?

在此先感谢您的帮助。迈克·普雷斯顿

4

2 回答 2

1

是解决问题的解决方案......我们的无头开发服务器只是偶尔会获得任何键盘活动来填充熵池(请阅读文章 - 我不会在这里尝试解释)并且我认为它一直阻塞直到有足够的“噪音”来生成必要的随机数。由于只有一个其他开发人员在系统上工作,因此可能需要几分钟来填充缓冲区。一旦缓冲区已满,它就会继续并按预期执行连接。这也解释了为什么我们有时会看到性能清脆,然后缓慢。简而言之,我们将字符串“-Djava.security.egd=file:///dev/urandom”添加到 Korn shell 脚本中对 java 的调用和 jar 文件名之间,现在它就像一个冠军一样工作。这是完整的命令字符串:

/usr/bin/java -Xms64m -Xmx1024m -Djava.security.egd=file:///dev/urandom -jar $1 $2 $PID

如果您确实阅读了这篇文章,请务必阅读下面的评论。其中一个真的很有趣!

于 2012-07-25T19:30:20.817 回答
1

找到了!当我们在 Solaris 下运行时,我们运行的是带有 32 位扩展的 32 位 JVM。我们通过 Korn shell 脚本执行,并添加了一个 -d64 标志来强制 64 位处理。在 Linux 机器上,我们从 shell 脚本中删除了 -d64 标志,大家都很高兴。感谢亚历克斯的想法和帮助。

于 2012-07-24T18:49:06.007 回答