在VM(VirtualBox和VMware)下,Weblogic启动缓慢(11分钟)

(已解决!通过FAKING SYSTEM RANDOM GENERATOR,见下文)

我正在为我的开发/构建团队设置VM映像。 在该VM内部,应该运行Weblogic域。 我使用Ububtu服务器发行版,WLS 9.2MP3 + ALSB。

一切正常,速度很快,但在开始时WLS会在可测量的时间内停止两次。 两站总共延迟约10分钟。 对于部署需要重新启动服务器的任务,这非常烦人。 🙁

睡眠时间不是一成不变的,有时服务器启动速度非常快,有时也是如此,有时甚至是10分钟或更长时间。

有趣的是,如果我在查看停止的服务器时按Enter键,它会更快地唤醒,有时几秒钟之后。 WLST(Weblogic Jython shell)在VM中执行时也会挂起很长时间。 虽然它没有对Enter作出反应。

这里必须是一些使用VM运行WLS的开发人员。 我想知道其他人是否有同样的问题? 有人能够解决它吗?

这是服务器输出(仅用于案例):

Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_12-b04) Java HotSpot(TM) Client VM (build 1.5.0_12-b04, mixed mode) Starting WLS with line: /shared2/beahome/jdk150_12/bin/java -client -Xmx256m -XX:MaxPermSize=128m -Xverify:none -da -Dplatform.home=/shared2/beahome/weblogic92 -Dwls.home=/shared2/beahome/weblogic92/server -Dwli.home=/shared2/beahome/weblogic92/integration -Dweblogic.management.discover=true -Dwl w.iterativeDev= -Dwlw.testConsole= -Dwlw.logErrorsToConsole= -Dweblogic.ext.dirs=/shared2/beahome/patch_weblogic923/profiles/default/sysext_ manifest_classpath -Dweblogic.management.username=admin -Dweblogic.management.password=wlsadmin -Dweblogic.Name=LOGMGR-admin -Djava.security .policy=/shared2/beahome/weblogic92/server/lib/weblogic.policy weblogic.Server                                    

在这里,我们有第一次延迟,最多5分钟……

                                    

这是第二次,最多5分钟。

                               

UPDATE

我想我已经有了这条赛道:它必须是randon种子初始化。 这可以解释为什么生成键盘事件会释放服务器。 我做了线程转储,一个线程处于runnable状态,但是等待:

 "[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=1 tid=0x0a7b06e8 nid=0xeda runnable [0x728a500 0..0x728a6d80] at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:194) at sun.security.provider.NativePRNG$RandomIO.readFully(NativePRNG.java:185) at sun.security.provider.NativePRNG$RandomIO.implGenerateSeed(NativePRNG.java:202) - locked  (a java.lang.Object) at sun.security.provider.NativePRNG$RandomIO.access$300(NativePRNG.java:108) at sun.security.provider.NativePRNG.engineGenerateSeed(NativePRNG.java:102) at java.security.SecureRandom.generateSeed(SecureRandom.java:475) at weblogic.security.AbstractRandomData.ensureInittedAndSeeded(AbstractRandomData.java:83) 

解决了

Weblogic使用SecureRandom来初始化安全子系统。 SecureRandom默认使用/ dev / urandom设备。 出于某种原因,在VM下读取此设备会经常停止。 生成控制台事件有助于创建更多随机性,并释放WLS。

出于测试目的,我更改了jre / lib / security / java.security文件:

 securerandom.source=file:/tmp/big.random.file 

Weblogic现在在15秒内启动。

由于我们不测试VM中的任何安全性内容,因此重复种子对我们来说完全没问题。

如果您的企业标准应用服务器没有更改二进制文件的权限,您可以添加一个JVM标志来覆盖应该使用随机生成器。 例如:

 -Djava.security.egd=file:/dev/./urandom 

这样您就不必更改任何系统设置。

从那以后,Oracle创建了与此相关的Metalink注释。在Linux虚拟环境中,FMW配置向导非常慢。 WLS服务器的启动也非常慢。 [ID 1344974.1]

解决方案1 ​​1)下载并安装以下rpm:rng-utils-2.0-1.14.1.fc6.x86_64.rpm。 请联系您的供应商以获取下载详 2)启动随机生成器如下:rngd -r / dev / urandom -o / dev / random -t 1

默认情况下,Linux上的/ dev / random似乎依赖于阻塞,直到产生足够的随机性。 没有连接鼠标和键盘的虚拟服务器可能会严重阻塞。 在上面的命令中,输入取自unblocking / dev / urandom,因此等待随机性不会成为应用程序瓶颈。

尝试安装rngd 。 在具有硬件RNG的现代系统上,这将创建足够的熵。