Weblogic медленно запускается (11 минут) под VM (VirtualBox и VMware)

(РЕШЕНО! ПОДДЕЛКА СИСТЕМНОГО ГЕНЕРАТОРА СЛУЧАЙНЫХ СЛУЧАЕВ, СМ. НИЖЕ)

Я настраиваю образ виртуальной машины для своей команды разработчиков/сборщиков. Внутри этой виртуальной машины должен работать домен Weblogic. Я использую серверный дистрибутив Ububtu, WLS 9.2MP3 + ALSB.

Все работает нормально, довольно быстро, но в момент запуска WLS дважды останавливается на измеримое количество времени. Всего две остановки составляют примерно 10-минутную задержку. Для задач, где развертывание требует перезагрузки сервера, это очень раздражает. :-(

Время сна непостоянно, иногда сервер стартует очень быстро, иногда так себе, иногда 10 минут и более.

Интересно, что если я нажимаю Enter, глядя на остановленный сервер, он просыпается гораздо быстрее, иногда через несколько секунд. WLST (оболочка Weblogic Jython) также довольно долго зависает при выполнении в виртуальной машине. Но на Enter не реагирует.

Должно быть, некоторые разработчики запускают 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
<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.>

Здесь у нас есть первая задержка, до 5 минут...

<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.>

И вот второй, опять до 5 мин.

<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>

ОБНОВЛЕНИЕ

Я думаю, что у меня есть трек: это должна быть инициализация семени рандона. Это может объяснить, почему генерация событий клавиатуры освобождает сервер. Я сделал дамп потока, и один поток находится в рабочем состоянии, но ожидает:

"[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)

person Vladimir Dyuzhev    schedule 01.04.2010    source источник
comment
Спасибо за публикацию обновлений, но вы должны опубликовать свое решение в качестве ответа и принять его.   -  person Pascal Thivent    schedule 02.04.2010
comment
Спасибо, сделаю. Я чувствовал, что это немного психически нездорово отвечать самому себе :-)   -  person Vladimir Dyuzhev    schedule 02.04.2010
comment
На самом деле это поощряется, особенно если вы нашли решение (вы даже можете использовать SO как личный технический блог, используя стиль jeopardy).   -  person Pascal Thivent    schedule 03.04.2010


Ответы (4)


РЕШЕНО

Weblogic использует SecureRandom для инициализации подсистемы безопасности. SecureRandom по умолчанию использует устройство /dev/urandom. Чтение этого устройства под ВМ почему-то часто останавливается. Генерация консольных событий помогает создать больше случайностей и выпустить WLS.

Для целей тестирования я изменил файл jre/lib/security/java.security:

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

Weblogic теперь запускается через 15 секунд.

Поскольку мы не тестируем какие-либо средства безопасности на наших виртуальных машинах, повторяющееся начальное число нас полностью устраивает.

person Vladimir Dyuzhev    schedule 02.04.2010
comment
Касается ли это окон? - person NaiveCoder; 22.10.2020

Если у вас есть стандартные корпоративные серверы приложений без прав на изменение ваших двоичных файлов, вы можете добавить флаг JVM для перезаписи того, какой генератор случайных чисел следует использовать. Например.:

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

Таким образом, вам не нужно менять какие-либо системные настройки.

person twh1st    schedule 14.08.2012
comment
Обратите внимание, что это может привести к проблемам с безопасностью, если вы используете небезопасный ГСЧ. - person Chris Jefferson; 11.11.2014
comment
А на системе windows в ситуации про отсутствие привилегий менять? - person André Luís Tomaz Dionisio; 15.05.2020

С тех пор Oracle создала заметку Metalink, связанную с этим. Мастер настройки FMW работает очень медленно в виртуальных средах Linux. Запуск серверов 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

По умолчанию кажется, что есть зависимость от /dev/random в Linux, которая блокируется до тех пор, пока не будет сгенерировано достаточное количество случайностей. Виртуальные серверы без подключенной мыши и клавиатуры могут значительно блокироваться. В приведенной выше команде входные данные берутся из разблокировки /dev/urandom, поэтому ожидание случайности не становится узким местом приложения.

person Ruan    schedule 23.11.2011
comment
ВНИМАНИЕ: Запуск rngd -r /dev/urandom приведет к тому, что любые созданные вами ключи (pgp, ssl и т. д.) будут небезопасными, поэтому используйте их с осторожностью! - person Chris Jefferson; 11.11.2014

Попробуйте установить rngd. В современных системах с аппаратным ГСЧ это создаст достаточно энтропии.

person Chris Jefferson    schedule 11.11.2014