关于 java:Jetty 启动延迟 | 珊瑚贝

Jetty startup delay


我正在尝试找出导致 Jetty 启动延迟 1 分钟的原因。是配置问题、我的应用程序问题还是其他问题?

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

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

执行此操作后,我立即得到两行输出:

1
2
20100307 14:20:06.642:INFO::Logging to StdErrLog::DEBUG=false via org.eclipse.jetty.util.log.StdErrLog
20100307 14:20:06.710:INFO::Redirecting stderr/stdout to /home/zing/jettydistribution7.0.1.v20091125/logs/2010_03_07.stderrout.log

当我按下回车键时,我会返回我的命令提示符。查看日志文件(logs/2010_03_07.stderrout.log),我在开头看到以下内容:

1
2
3
4
5
6
7
8
20100307 14:08:50.396:INFO::jetty7.0.1.v20091125
20100307 14:08:50.495:INFO::Extract jar:file:/home/zing/jettydistribution7.0.1.v20091125/webapps/ROOT.war!/ to /tmp/Jetty_0_0_0_0_8080_ROOT.war___.8te0nm/webapp
20100307 14:08:52.599:INFO::NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet
20100307 14:09:51.379:INFO::Set web app root system property: ‘webapp.root’ = [/tmp/Jetty_0_0_0_0_8080_ROOT.war___.8te0nm/webapp]
20100307 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

请注意第 3 行和第 4 行之间的 1 分钟长停顿。 Jetty 现在在做什么?还会发生什么其他事情?它甚至看起来还没有开始我的 Spring 初始化。

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

更新:

感谢建议,我添加了 DEBUG 日志记录。我发现提取war文件大约需要2秒。但是在 Init SecureRandom 上有大约 41 秒的延迟:

1
2
3
4
5
6
7
8
9
20100307 21:54:45.414:DBUG::Starting SessionHandler@79884a40@
20100307 21:54:45.414:DBUG::Starting org.eclipse.jetty.server.session.HashSessionManager@5fe8ce8
20100307 21:54:45.416:DBUG::Container org.eclipse.jetty.server.Server@35175422 + org.eclipse.jetty.server.session.HashSessionIdManager@1d96f4b5 as sessionIdManager
20100307 21:54:45.416:DBUG::Starting org.eclipse.jetty.server.session.HashSessionIdManager@1d96f4b5
20100307 21:54:45.416:DBUG::Init SecureRandom.
20100307 21:55:26.244:DBUG::STARTED org.eclipse.jetty.server.session.HashSessionIdManager@1d96f4b5
20100307 21:55:26.247:DBUG::STARTED org.eclipse.jetty.server.session.HashSessionManager@5fe8ce8
20100307 21:55:26.248:DBUG::Starting ConstraintSecurityHandler@6b9cd75a@
20100307 21:55:26.261:DBUG::Starting ServletHandler@62c2ee15@

什么是 SecureRandom,为什么会导致这种延迟?

解决方案:

我的系统似乎遇到了负载不足的问题。我刚刚将其设置为新的登台服务器,除了我之外没有人使用它。所以系统没有足够的熵让随机数生成器快速生成足够的随机性。


Jetty 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 号码头:

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

  • @Pascal,感谢您的帮助。我用一些调试日志更新了我的问题。看起来它被 SecureRandom 阻止了。有任何想法吗?
  • @Pascal,我想我找到了解决方案。你的回答帮我找到了,谢谢! docs.codehaus.org/display/JETTY/Connectors 启动缓慢
  • 另外,根据您的建议,我已更改回 6.1.22。
  • 要增加机器上的熵,您可以使用 issihosts.com/haveged



尝试将日志级别更改为 DEBUG 并查看它是否显示了任何有趣的内容。如果不出意外,它可能允许您缩小问题在启动顺序中的位置。

  • @斯蒂芬。谢谢。如果您有任何进一步的想法,我已经在问题中添加了一些调试日志。


来源:https://www.codenong.com/2398268/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9098.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?