Задержка запуска причала

Я пытаюсь выяснить, что может вызвать 1-минутную задержку при запуске Jetty. Это проблема конфигурации, мое приложение или что-то еще?

У меня есть Jetty 7 (jetty-7.0.1.v20091125 25 ноября 2009 г.), установленная на сервере, и я развертываю файл ROOT.war размером 45 МБ в каталоге webapps. Это единственное веб-приложение, настроенное в Jetty. Затем я запускаю Jetty командой:

java -DSTOP.PORT=8079 -DSTOP.KEY=mystopkey -Denv=stage -jar start.jar etc/jetty-logging.xml etc/jetty.xml &

Я получаю две строки вывода сразу после этого:

2010-03-07 14:20:06.642:INFO::Logging to StdErrLog::DEBUG=false via org.eclipse.jetty.util.log.StdErrLog
2010-03-07 14:20:06.710:INFO::Redirecting stderr/stdout to /home/zing/jetty-distribution-7.0.1.v20091125/logs/2010_03_07.stderrout.log

Когда я нажимаю клавишу ввода, я снова получаю командную строку. Глядя на файл журнала (logs/2010_03_07.stderrout.log), я вижу в начале следующее:

2010-03-07 14:08:50.396:INFO::jetty-7.0.1.v20091125
2010-03-07 14:08:50.495:INFO::Extract jar:file:/home/zing/jetty-distribution-7.0.1.v20091125/webapps/ROOT.war!/ to /tmp/Jetty_0_0_0_0_8080_ROOT.war___.8te0nm/webapp
2010-03-07 14:08:52.599:INFO::NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet
2010-03-07 14:09:51.379:INFO::Set web app root system property: 'webapp.root' = [/tmp/Jetty_0_0_0_0_8080_ROOT.war___.8te0nm/webapp]
2010-03-07 14:09:51.585:INFO::Initializing Spring root WebApplicationContext
INFO  - ContextLoader              - Root WebApplicationContext: initialization started
INFO  - XmlWebApplicationContext   - Refreshing Root WebApplicationContext: startup date [Sun Mar 07 14:09:51 PST 2010]; root of context hierarchy
...

Обратите внимание на 1-минутную паузу между 3-й и 4-й строками. Что в этот момент делает Джетти? Какие еще вещи могут происходить? Даже не похоже, что он начал инициализацию Spring.

Обратите внимание, что я проверил свой каталог /tmp, чтобы убедиться, что пришло время распаковать мой военный файл, но файл был полностью распакован даже в начале этой 1-минутной задержки.

ОБНОВИТЬ:

Благодаря предложениям я добавил ведение журнала DEBUG. Я обнаружил, что для извлечения файла войны было использовано около 2 секунд. Но при Init SecureRandom возникает задержка около 41 секунды:

2010-03-07 21:54:45.414:DBUG::Starting SessionHandler@79884a40@
2010-03-07 21:54:45.414:DBUG::Starting org.eclipse.jetty.server.session.HashSessionManager@5fe8ce8
2010-03-07 21:54:45.416:DBUG::Container org.eclipse.jetty.server.Server@35175422 + org.eclipse.jetty.server.session.HashSessionIdManager@1d96f4b5 as sessionIdManager
2010-03-07 21:54:45.416:DBUG::Starting org.eclipse.jetty.server.session.HashSessionIdManager@1d96f4b5
2010-03-07 21:54:45.416:DBUG::Init SecureRandom.
2010-03-07 21:55:26.244:DBUG::STARTED org.eclipse.jetty.server.session.HashSessionIdManager@1d96f4b5
2010-03-07 21:55:26.247:DBUG::STARTED org.eclipse.jetty.server.session.HashSessionManager@5fe8ce8
2010-03-07 21:55:26.248:DBUG::Starting ConstraintSecurityHandler@6b9cd75a@
2010-03-07 21:55:26.261:DBUG::Starting ServletHandler@62c2ee15@

Что такое SecureRandom и почему он вызывает эту задержку?

РЕШЕНИЕ:

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


person Tauren    schedule 07.03.2010    source источник


Ответы (2)


Jetty 7 (и, возможно, ниже):

Установите (очень) подробное ведение журнала отладки с помощью -Dorg.eclipse.jetty.util.log.DEBUG=true (см. Jetty/Starting /Porting to Jetty 7) и попробуйте посмотреть, что происходит в эту минуту.

В качестве примечания: вам, вероятно, понадобится поддержка jsp, поэтому при запуске следует передать -DOPTIONS=Server,deploy,jsp (см. Выполняется Jetty-7.0.x).

И если вам не нужны причудливые вещи из Jetty 7.x, тогда вам следует придерживаться Jetty 6 вместо Jetty 7 eclipse (более стабильный, меньше проблем из-за миграции Eclipse, лучшая документация, проще в использовании).

Причал 8:

В Jetty 8.1: системное свойство [org.eclipse.jetty.util.log.DEBUG] устарело! (Вместо этого используйте org.eclipse.jetty.LEVEL=DEBUG)

person Pascal Thivent    schedule 07.03.2010
comment
@Паскаль, спасибо за помощь. Я обновил свой вопрос некоторыми журналами отладки. Похоже, он задерживается на SecureRandom. Любые идеи? - person Tauren; 08.03.2010
comment
@Pascal, кажется, я нашел решение. Ваш ответ помог мне найти его, спасибо! docs.codehaus.org/display/JETTY/Connectors+slow+to+ запуск - person Tauren; 08.03.2010
comment
Кроме того, я вернулся к версии 6.1.22 по вашему предложению. - person Tauren; 08.03.2010
comment
Чтобы увеличить энтропию на вашем компьютере, вы можете использовать issihosts.com/haveged. - person Bastien Caudan; 30.07.2014

Попробуйте изменить уровень ведения журнала на DEBUG и посмотрите, что покажет что-нибудь интересное. По крайней мере, это может позволить вам сузить, где в последовательности запуска проблема.

person Stephen C    schedule 07.03.2010
comment
@Стефан. Спасибо. Я добавил несколько журналов отладки к вопросу, если у вас есть дополнительные идеи. - person Tauren; 08.03.2010