2010-04-01 3 views
16

(GELöST! BY SYSTEM Zufallsgenerator fälscht, siehe unten)Weblogic ist langsam zu starten (11mins) unter VM (VirtualBox und VMware)

Ich gründe ein VM-Image für meinen dev up/build-Team . Innerhalb dieser VM sollte eine Weblogic-Domäne laufen. Ich benutze Ububtu Server Distribution, WLS 9.2MP3 + ALSB.

Alles funktioniert OK, ziemlich schnell, aber zur Startzeit stoppt der WLS zweimal für eine messbare Zeit. Zwei Stopps insgesamt betragen ca. 10 Minuten Verspätung. Für Aufgaben, bei denen die Bereitstellung einen Neustart des Servers erfordert, ist dies sehr ärgerlich. :-(

Schlafzeit ist nicht konstant, manchmal der Server startet sehr schnell, manchmal so lala, manchmal 10 Minuten oder mehr.

Interessant, dass, wenn ich während des gestoppten Server suchen drücken Sie die Eingabetaste, es weckt viel schneller, manchmal nach ein paar Sekunden. WLST (Weblogic Jython Shell) hängt auch eine ganze Weile, wenn in VM ausgeführt. Es reagiert nicht auf Enter obwohl.

Hier müssen einige Entwickler, die WLS ausführen mit einer VM. Ich frage mich, ob andere das gleiche Problem haben? War jemand in der Lage, es zu lösen?

Hier ist die Server-Ausgabe (nur für den Fall):

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 
<1-Apr-2010 12:47:22 o'clock PM GMT-05:00> <Notice> <WebLogicServer> <BEA-000395> <Following extensions directory contents added to the end 
of the classpath: 
/shared2/beahome/weblogic92/platform/lib/p13n/p13n-schemas.jar:/shared2/beahome/weblogic92/platform/lib/p13n/p13n_common.jar:/shared2/beahom 
e/weblogic92/platform/lib/p13n/p13n_system.jar:/shared2/beahome/weblogic92/platform/lib/wlp/netuix_common.jar:/shared2/beahome/weblogic92/pl 
atform/lib/wlp/netuix_schemas.jar:/shared2/beahome/weblogic92/platform/lib/wlp/netuix_system.jar:/shared2/beahome/weblogic92/platform/lib/wl 
p/wsrp-common.jar> 
<1-Apr-2010 12:47:22 o'clock PM GMT-05:00> <Info> <WebLogicServer> <BEA-000377> <Starting WebLogic Server with Java HotSpot(TM) Client VM Ve 
rsion 1.5.0_12-b04 from Sun Microsystems Inc.> 
<1-Apr-2010 12:47:23 o'clock PM GMT-05:00> <Info> <Management> <BEA-141107> <Version: WebLogic Server 9.2 MP3 Mon Mar 10 08:28:41 EDT 2008 
1096261 > 
<1-Apr-2010 12:47:25 o'clock PM GMT-05:00> <Info> <WebLogicServer> <BEA-000215> <Loaded License : /shared2/beahome/license.bea> 
<1-Apr-2010 12:47:25 o'clock PM GMT-05:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING> 
<1-Apr-2010 12:47:25 o'clock PM GMT-05:00> <Info> <WorkManager> <BEA-002900> <Initializing self-tuning thread pool> 
<1-Apr-2010 12:47:25 o'clock PM GMT-05:00> <Notice> <Log Management> <BEA-170019> <The server log file /shared2/wldomains/beaadmd/LOGMGR/ser 
vers/LOGMGR-admin/logs/LOGMGR-admin.log is opened. All server side log events will be written to this file.> 

Hier haben wir die erste Verzögerung, bis zu 5 Minuten ...

<1-Apr-2010 12:53:21 o'clock PM GMT-05:00> <Notice> <Security> <BEA-090082> <Security initializing using security realm myrealm.> 
<1-Apr-2010 12:53:24 o'clock PM GMT-05:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STANDBY> 
<1-Apr-2010 12:53:24 o'clock PM GMT-05:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING> 
<1-Apr-2010 12:53:25 o'clock PM GMT-05:00> <Notice> <Log Management> <BEA-170027> <The server initialized the domain log broadcaster success 
fully. Log messages will now be broadcasted to the domain log.> 
<1-Apr-2010 12:53:25 o'clock PM GMT-05:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to ADMIN> 
<1-Apr-2010 12:53:25 o'clock PM GMT-05:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RESUMING> 
<1-Apr-2010 12:53:28 o'clock PM GMT-05:00> <Notice> <Security> <BEA-090171> <Loading the identity certificate and private key stored under t 
he alias adminuialias from the jks keystore file /shared2/wldomains/beaadmd/LOGMGR/CustomIdentity.jks.> 

Und hier ist die zweite, wieder bis zu 5 Minuten.

<1-Apr-2010 12:58:56 o'clock PM GMT-05:00> <Notice> <Security> <BEA-090169> <Loading trusted certificates from the jks keystore file /shared 
2/wldomains/beaadmd/LOGMGR/CustomTrust.jks.> 
<1-Apr-2010 12:58:57 o'clock PM GMT-05:00> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure" is now listening on 192.168.56.102:7002 f 
or protocols iiops, t3s, ldaps, https.> 
<1-Apr-2010 12:58:57 o'clock PM GMT-05:00> <Notice> <Server> <BEA-002613> <Channel "Default" is now listening on 192.168.56.102:8012 for pro 
tocols iiop, t3, ldap, http.> 
<1-Apr-2010 12:58:57 o'clock PM GMT-05:00> <Notice> <WebLogicServer> <BEA-000331> <Started WebLogic Admin Server "LOGMGR-admin" for domain " 
LOGMGR" running in Development Mode> 
<1-Apr-2010 12:58:57 o'clock PM GMT-05:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING> 
<1-Apr-2010 12:58:57 o'clock PM GMT-05:00> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode> 

UPDATE

Ich glaube, ich den Titel haben: es ist die randon Samen Initialisierung sein muss. Das könnte erklären, warum das Generieren von Tastaturereignissen den Server freigibt. Ich habe den Thread-Dump gemacht, und ein Thread ist in runnable Zustand, aber warten:

"[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 <0x7d928c78> (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) 
+1

Vielen Dank für das Posten von Updates, aber Sie sollten Ihre Lösung tatsächlich als Antwort veröffentlichen und akzeptieren. –

+0

Danke, werde ich tun. Ich fühlte, dass es ein bisschen psychisch-ungesund ist, mir selbst zu antworten :-) –

+1

Eigentlich wird es ermutigt, besonders wenn du die Lösung gefunden hast (du kannst sogar SO als einen persönlichen technischen Blog verwenden, indem du einen Gefährtenstil verwendest). –

Antwort

16

GELÖST

Weblogic nutzt Securesicherheitssubsystem init. SecureRandom verwendet standardmäßig/dev/urandom device. Aus irgendeinem Grund kommt das Lesen dieses Geräts unter VM ziemlich oft zum Stillstand. Das Generieren von Konsolenereignissen hilft, mehr Zufälligkeit zu erzeugen und das WLS freizugeben.

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

Weblogic jetzt beginnt in 15 Sekunden:

Für Testzwecke habe ich jre/lib/security/java.security Datei geändert.

Da wir in unseren VMs keine Sicherheitsaspekte testen, ist die Wiederholung für uns völlig in Ordnung.

6

Oracle hat seit dieser Zeit eine Metalink-Notiz zu diesem Thema erstellt Der FMW-Konfigurationsassistent ist in virtuellen Linux-Umgebungen sehr langsam. Der Start von WLS-Servern ist ebenfalls sehr langsam. [ID 1344974.1]

...

Lösung 1 1) Laden Sie die folgenden rpm: rng-utils-2.0-1.14.1.fc6.x86_64.rpm herunter und installieren Sie sie. Wenden Sie sich für Einzelheiten zum Herunterladen an Ihren Händler. 2) Inbetriebnahme des Zufallsgenerators wie folgt: RNGD -r/dev/urandom -o/dev/random -t 1

standardmäßig scheint es eine Abhängigkeit von/dev/random auf Linux werden, die Blöcke, bis genug Zufälligkeit wird erzeugt. Virtuelle Server ohne angeschlossene Maus und Tastatur können erheblich blockieren. In dem obigen Befehl wird die Eingabe von der Entsperrung/dev/urandom genommen, so dass das Warten auf Zufälligkeit nicht zu einem Anwendungsengpass wird.

+1

WARNUNG: Das Ausführen von rngd -r/dev/urandom führt dazu, dass alle von Ihnen generierten Schlüssel (pgp, ssl usw.) nicht sicher sind. –

8

Wenn Sie App-Server im Unternehmensstandard haben, die keine Rechte zum Ändern Ihrer Binärdateien haben, können Sie ein JVM-Flag hinzufügen, um zu überschreiben, welcher Zufallsgenerator verwendet werden soll. Zum Beispiel:

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

So müssen Sie keine Systemeinstellungen ändern.

+0

Beachten Sie, dass dies zu Sicherheitsproblemen führen kann, wenn Sie einen unsicheren RNG verwenden. –

0

Versuchen Sie, rngd zu installieren. Auf modernen Systemen mit einem Hardware-RNG wird dies genug Entropie erzeugen.