2010-03-07 93 views
13

我想弄清楚什么会导致1分钟延迟在Jetty的启动。这是配置问题,我的应用程序还是其他?码头启动延迟

我在服务器上安装了Jetty 7(jetty-7.0.1.v20091125 25 November 2009),我将一个45MB ROOT.war文件部署到webapps目录中。这是在Jetty中配置的唯一web应用程序。然后我用命令启动码头:

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 

当我按下回车键时,我让我的命令提示符后面。纵观日志文件(日志/ 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分钟长的停顿。 Jetty目前在做什么?还有什么其他的事情可以发生?它甚至不像它已经开始我的Spring初始化。

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

更新:

感谢建议,我添加了DEBUG日志。我发现大约2秒钟被用来提取战争文件。但随后有许多关于初始化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的,为什么会是造成这种延迟?

SOLUTION:

它看起来像我遇到一个问题,我system not having enough load。我刚把它设置为一个新的登台服务器,除了我之外没有人使用它。所以系统对于随机数发生器没有足够的熵来快速产生足够的随机性。

回答

14

码头7(也许更低):

设置(非常)详细的调试日志记录与-Dorg.eclipse.jetty.util.log.DEBUG=true(见Jetty/Starting/Porting to Jetty 7),并尝试看看这是什么分钟内发生。作为便笺,您可能需要jsp支持,因此启动时应该通过-DOPTIONS=Server,deploy,jsp(请参阅Running Jetty-7.0.x)。

如果你不需要Jetty 7.x的花哨的东西,那么你应该坚持使用Jetty 6而不是Jetty 7 eclipse(由于Eclipse迁移更稳定,问题更少,文档更好,更易于使用) 。

码头8:

在码头8.1:系统属性[org.eclipse.jetty.util.log.DEBUG]已弃用! (改用org.eclipse.jetty.LEVEL = DEBUG)

+0

@帕斯卡,感谢您的帮助。我用一些调试日志更新了我的问题。它看起来像是在SecureRandom上举行。有任何想法吗? – Tauren 2010-03-08 06:11:52

+4

@Pascal,我想我找到了解决方案。你的回答帮助我找到它,谢谢! http://docs.codehaus.org/display/JETTY/Connectors+slow+to+startup – Tauren 2010-03-08 06:51:05

+0

另外,根据你的建议我已经改回到6.1.22。 – Tauren 2010-03-08 06:51:46

2

尝试将日志记录级别更改为DEBUG,并查看它显示的任何有趣内容。如果没有其他的事情,它可能会让你缩小问题发生的顺序。

+0

@Stephan。谢谢。如果您有任何进一步的想法,我已经为该问题添加了一些调试日志。 – Tauren 2010-03-08 06:12:36

+0

@Tauren - 我看你已经明白了。 – 2010-03-08 07:09:36