Я пытаюсь выяснить, что может вызвать 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 и почему он вызывает эту задержку?
РЕШЕНИЕ:
Похоже, у меня возникла проблема с недостаточной нагрузкой моей системы. а>. Я только что настроил его как новый промежуточный сервер, и кроме меня им никто не пользуется. Таким образом, системе не хватает энтропии для генератора случайных чисел, чтобы быстро генерировать достаточное количество случайностей.