簡體   English   中英

改善JBoss 5啟動緩慢

[英]Improving JBoss 5 slow startup

我們從JBoss 4(和JDK 5)升級到JBoss 5(和JDK 6)。 問題是開始時間已經從1.5分鍾(在JBoss 4上)增加到4分鍾以上。

18:53:35,444 INFO  [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)] Started in 3m:9s:262ms

似乎花費JBoss最長時間來初始化的組件是JMX

18:50:41,926 INFO  [LogNotificationListener] Adding notification listener for logging mbean "jboss.system:service=Logging,type=Log4jService" to server org.jboss.mx.server.MBeanServerImpl@1adc122[ defaultDomain='jboss' ]
18:52:38,797 INFO  [JMXConnectorServerService] JMX Connector server: service:jmx:rmi://lharel2/jndi/rmi://lharel2:1090/jmxconnector

從調試服務器日志中,我在有問題的時間得到了以下幾行:

2009-12-18 18:51:00,886 DEBUG [org.jboss.deployment.MappedReferenceMetaDataResolverDeployer] (main) vfsfile:/C:/QC/Views/QCDev/jboss-5.1.0.GA/server/default/deploy/jmx-console.war/ endpoint mappings:
2009-12-18 18:51:00,886 DEBUG [org.jboss.deployment.MappedReferenceMetaDataResolverDeployer] (main) Processing unit=jmx-console.war, structure: jmx-console.war
2009-12-18 18:52:35,209 DEBUG [org.jboss.deployment.OptAnnotationMetaDataDeployer] (main) Deployment is metadata-complete, skipping annotation processing, ejbJarMetaData=null, jbossWebMetaData=org.jboss.metadata.web.spec.Web23MetaData@1f, jbossClientMetaData=null, metaDataCompleteIsDefault=false

項目中沒有EJB。

內存設置為:

 -Xms128m -Xmx512m -XX:MaxPermSize=256m

您是否知道如何改善JBoss的啟動時間?

更新:到目前為止沒有運氣,我嘗試了shreeni的建議(更改了掃描xml)。 服務器未在調試模式下運行,因此MicSim的建議不相關

無需更多信息即可射入藍天

  • 網絡超時:部署jmx-console.war時延遲1.5分鍾,可能表示網絡超時(例如3 x 30秒)。 嘗試使用-b命令行參數或jboss.bind.address系統屬性來啟動JBoss並將其綁定到特定的IP地址。 另外,請嘗試確保系統上的主機和DNS解析設置正確。

  • JMX也使用RMI,您可能需要將RMI服務器主機名設置為系統屬性 在某些Linux發行版中,RMI在查找正確的主機名和jmx-console時遇到問題。war可能會嘗試連接到“錯誤的本地主機”。 系統屬性是java.rmi.server.hostname

  • 系統跟蹤:如果這樣做沒有幫助,則可能要使用strace來啟動Java進程,以便可以看到系統掛起的點(如果由於網絡超時或類似原因而確實掛起)。

這是日志中的巨大差距。 我建議更改日志配置以在DEBUG級別而不是INFO記錄所有內容。 這將產生更多的日志條目,但是希望可以幫助您縮小范圍。

最簡單的方法是在啟動JBoss時設置-Djboss.server.log.threshold=DEBUG系統屬性。

您對jmx控制台的懷疑可能會引起誤解。 可能還有其他組件在后台執行與jmx-console不相關的工作。 以我的經驗,我們遇到一個問題,一個小的戰爭文件似乎需要3分鍾才能加載! 這是無辜的。 罪魁禍首部分是由於EAR文件中有許多戰爭和罐子。

雖然我不是專家,但我建議以下幾點:

  1. 嘗試將日志記錄調至TRACE。 通過這樣做,我看到其中一個部署程序(我認為是EJBDeployer)不必要地掃描了我們一個EAR中的WAR。 然后,我手動禁用了那些WAR文件的掃描。
  2. 在啟動過程中運行wireshark。 我發現一些戰爭文件在等待外部DTD請求的響應時掛起。 這些網站現在不存在,或者無法將DTD文件正確地提供給基於Java的程序。 我可以通過讓程序員使用本地DTD文件或在本地鏡像這些DTD並在本地使用/ etc / host環回來加快速度。

我遇到了這樣的問題,但是通過將初始堆大小和最大堆大小設置為相同的值,我發現了一個很好的改進,我的意思是:

 -Xms512m -Xmx512m

這樣,我將啟動時間從4分鍾縮短到2分鍾。

您可以參考此鏈接,以避免不必要的注釋掃描,否則可能會加速服務器啟動

請參閱http://community.jboss.org/wiki/jboss5xtuningslimming,尤其是“ Tuning”部分。

  1. 關閉不需要的注釋掃描和其他功能https://community.jboss.org/wiki/jboss5xtuningslimming

  2. 當您從Eclipse啟動/停止JBoss時,它無法正確清理tmp和work文件夾。 設置外部工具配置並運行批處理文件,以在每次啟動之前刪除tmp和工作文件夾中的所有內容。

我能夠將“默認”配置文件的運行時間從15/20分鍾加速到5分鍾。

我正在將JBoss 5.1.0與Macbook pro(2.26ghz 4gb)結合使用,而沒有在54s開始的應用程序

15:00:26,449 INFO  [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)] Started in 54s:720ms

我基於“默認”進行了新配置。 JMS數據源指向一個Postgres數據庫,而不是“ Hypersonic數據庫”(在內存數據庫中)

我想您是從調試模式開始的。 此模式可能比普通模式慢3倍。 但是從JDK5切換到JDK6時可能還會出現問題。 我發現這個解決方案在這里在網上:

我已經解決了。 這是一個調試問題。 我從以下位置更改了調試設置:

 wrapper.java.additional.26=-Xdebug wrapper.java.additional.27=-Xnoagent wrapper.java.additional.28=-Djava.compiler=NONE wrapper.java.additional.27=-Xrunjdwp:transport=dt_socket,address=7199,server=y,suspend=n 

至:

 wrapper.java.additional.26=-Xdebug wrapper.java.additional.27=-Xrunjdwp:transport=dt_socket,address=7199,server=y,suspend=n 

然后JBoss又變快了。

希望這可以幫助。

您是否需要JMX控制台應用程序? 務實的事情是從服務器取消部署它,您仍然可以將jconsole或jvisualvm用於基本上相同的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM