改善JBoss 5缓慢启动

时间:2009-12-18 08:46:14

标签: java jboss jboss5.x

我们从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

在DEBUG服务器日志中,我在有问题的时间得到这些行:

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的建议(更改扫描xmls)。服务器未在调试模式下运行,因此MicSim的建议不相关

10 个答案:

答案 0 :(得分:8)

在没有更多信息的情况下向蓝天射击

  • 网络超时:部署jmx-console.war时延迟1.5分钟可能表示网络超时(例如3 x 30秒)。尝试使用-b命令行参数或jboss.bind.address系统属性启动JBoss并将其绑定到特定的IP地址。另外,请尝试确保系统上的主机和DNS解析设置正确无误。

  • JMX也在使用RMI,您可能希望将 RMI服务器主机名设置为系统属性。在某些Linux发行版中,RMI在查找正确的主机名时遇到问题,而jmx-console.war可能会尝试连接到“错误的localhost”。系统属性为java.rmi.server.hostname

  • 系统跟踪:如果这样做无效,您可能需要使用strace启动java进程,这样您就可以看到系统挂起的位置(如果它确实因网络超时或类似情况而挂起。

答案 1 :(得分:4)

这是日志中的一个非常大的差距。我建议更改日志配置以记录DEBUG级别的所有内容,而不是INFO。这将生成更多的日志条目,但希望能帮助您缩小范围。

最简单的方法是在启动JBoss时设置-Djboss.server.log.threshold=DEBUG系统属性

答案 2 :(得分:3)

您对jmx-console的怀疑可能会产生误导。可能有其他组件在后台工作,与jmx-console无关。根据我的经验,我们遇到一个问题,一个小的战争文件似乎需要3分钟加载!这是无辜的。罪魁祸首部分原因是EAR档案中有许多战争和罐子。

虽然我不是专家,但我建议如下:

  1. 尝试将日志记录调到TRACE。通过这样做,我目睹了其中一个部署者(我认为是EJBDeployer)在我们的一个EAR中不必要地扫描WAR。然后我手动禁用了那些WAR文件的扫描。
  2. 启动期间运行wireshark。我在等待外部DTD请求的响应时发现一些war文件正在挂起。这些网站现在不存在或者不能正确地将DTD文件提供给基于java的程序。我可以通过让程序员使用本地DTD文件或在本地镜像这些DTD并在本地使用/ etc / host环回来加快速度。

答案 3 :(得分:3)

我遇到了这样的问题,但是通过将初始和最大堆大小设置为相同的值我发现了一个很好的改进,我的意思是:

 -Xms512m -Xmx512m

有了这个,我的开始时间从4分钟提高到2分钟。

答案 4 :(得分:1)

您可以参考此link以避免不必要的注释扫描,这可能会加快您的服务器启动

答案 5 :(得分:1)

请参阅http://community.jboss.org/wiki/jboss5xtuningslimming,尤其是“调整”部分。

答案 6 :(得分:0)

我正在使用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 dataosurce指向Postgres数据库而不是“Hypersonic数据库”(在内存数据库中)

答案 7 :(得分:0)

我想你是在调试模式下开始的。此模式最多可比正常模式慢3倍。 但是从JDK5切换到JDK6时可能也存在问题。我在网上找到了这个解决方案here

  

我已经解决了这个问题。这是一个调试问题。我已经改变了我的调试设置:

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再次变得快速。

希望这有帮助。

答案 8 :(得分:0)

您需要JMX控制台应用程序吗?务实的事情是从服务器取消部署它,你仍然可以使用jconsole或jvisualvm基本相同的东西。

答案 9 :(得分:0)

  1. 关闭注释扫描和其他不需要的功能https://community.jboss.org/wiki/jboss5xtuningslimming

  2. 当你从eclipse开始/停止JBoss时,它不会清理tmp&工作文件夹正确。设置外部工具配置并运行批处理文件以删除tmp&中的所有内容。每次启动前的工作文件夹。

  3. 我能够将“默认”配置文件从15/20分钟加速到5分钟。