Я пытаюсь выяснить, что вызовет 1 минута при запуске Jetty. Это проблема конфигурации, мое приложение или что-то еще?
У меня установлен Jetty 7 (jetty-7.0.1.v20091125 25 ноября 2009 г.) на сервере, и я разворачиваю файл ROOT.war размером 45 МБ в каталог webapps. Это единственный webapp, настроенный в 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-й строками. Что делает Jetty на этом этапе? Что еще может быть? Это даже не похоже на то, что он начал мою инициализацию Spring.
Обратите внимание, что я проверил каталог /tmp, чтобы убедиться, что это просто время для распаковки моего военного файла, но файл был полностью распакован даже в начале этой 1-минутной задержки.
UPDATE:
Благодаря предложениям я добавил регистрацию DEBUG. Я обнаружил, что около 2 секунд было использовано для извлечения военного файла. Но тогда на Init SecureRandom происходит примерно 41 секунда:
2010-03-07 21:54:45.414:DBUG::Starting [email protected]@
2010-03-07 21:54:45.414:DBUG::Starting [email protected]
2010-03-07 21:54:45.416:DBUG::Container [email protected] + [email protected] as sessionIdManager
2010-03-07 21:54:45.416:DBUG::Starting [email protected]
2010-03-07 21:54:45.416:DBUG::Init SecureRandom.
2010-03-07 21:55:26.244:DBUG::STARTED [email protected]
2010-03-07 21:55:26.247:DBUG::STARTED [email protected]
2010-03-07 21:55:26.248:DBUG::Starting [email protected]@
2010-03-07 21:55:26.261:DBUG::Starting [email protected]@
Что такое SecureRandom и почему это вызвало эту задержку?
РЕШЕНИЕ:
Похоже, я столкнулся с проблемой, когда моя система не имеет достаточной нагрузки. Я просто установил это как новый промежуточный сервер, и никто не использует его, кроме меня. Таким образом, система не имеет достаточной энтропии для генератора случайных чисел, чтобы быстро генерировать достаточно случайности.