2010-03-07 143 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