Jetty启动延迟

Tau*_*ren 13 java deployment spring web-applications jetty

我试图弄清楚Jetty启动时会造成1分钟延迟的原因.是配置问题,我的应用程序还是其他什么?

我在服务器上安装了Jetty 7(jetty-7.0.1.v20091125,2009年11月25日),并将一个45MB的ROOT.war文件部署到webapps目录中.这是Jetty中配置的唯一webapp.然后我用命令启动Jetty:

java -DSTOP.PORT=8079 -DSTOP.KEY=mystopkey -Denv=stage -jar start.jar etc/jetty-logging.xml etc/jetty.xml &
Run Code Online (Sandbox Code Playgroud)

这样做后我得到两行输出:

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
Run Code Online (Sandbox Code Playgroud)

当我按下回车键时,我得到了我的命令提示符.查看日志文件(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
...
Run Code Online (Sandbox Code Playgroud)

注意第3行和第4行之间的1分钟长暂停.Jetty在这一点上做了什么?还有什么其他的事情可以发生?它甚至看起来还没有开始我的Spring初始化.

请注意,我检查了我的/ tmp目录以查看是否只是解压我的war文件的时间,但是文件已经完全解压缩,即使在这1分钟的延迟开始时也是如此.

更新:

感谢您的建议,我添加了DEBUG日志记录.我发现大约2秒用于提取war文件.但是在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@
Run Code Online (Sandbox Code Playgroud)

什么是SecureRandom,为什么会造成这种延迟?

解:

看起来我遇到了系统没有足够负载的问题.我刚刚把它设置为一个新的临时服务器,除了我之外没有人使用它.因此系统没有足够的熵来使随机数发生器快速产生足够的随机性.

Pas*_*ent 14

Jetty 7(也许更低):

设置(非常)详细的调试日志记录-Dorg.eclipse.jetty.util.log.DEBUG=true(参见Jetty/Starting/Porting to Jetty 7)并尝试查看在这一分钟内发生的事情.

作为旁注,您可能需要jsp支持,因此您应该-DOPTIONS=Server,deploy,jsp在启动时通过(请参阅运行Jetty-7.0.x).

如果你不需要从码头7.x的花哨的东西,那么你应该用码头6代替码头坚持7月食(更稳定,少的问题,因为Eclipse的迁移,更好的文档,使用更方便).

码头8:

在Jetty 8.1中:系统属性[org.eclipse.jetty.util.log.DEBUG]已被弃用!(使用org.eclipse.jetty.LEVEL = DEBUG代替)

  • @Pascal,我想我找到了解决方案.你的回答帮我找到了,谢谢!http://docs.codehaus.org/display/JETTY/Connectors+slow+to+startup (4认同)