WebSphere 9过多的启动时间

时间:2016-07-14 08:30:01

标签: websphere

我正在测试推动WebSphere Application Server 9,完整的配置文件,并且我对启动配置文件所需的时间感到好奇。 我已经安装了一个应用程序,理论上,这可能是罪魁祸首,但是日志没有显示任何证据。 日志文件的相关部分:

[14-07-2016 9:15:06:955 BST] 0000005b ApplicationMg A   WSVR0221I: Application started: isclite
[14-07-2016 9:15:06:956 BST] 0000005b CompositionUn A   WSVR0191I: Composition unit WebSphere:cuname=isclite in BLA WebSphere:blaname=isclite started.
[14-07-2016 9:16:14:410 BST] 0000005a InternalGener I   DSRA8225I: DataSource JNDI name : jdbc/DefaultEJBTimerDataSource
[14-07-2016 9:16:14:413 BST] 0000005a InternalGener I   DSRA8203I: Database product name : Apache Derby
[14-07-2016 9:16:14:413 BST] 0000005a InternalGener I   DSRA8204I: Database product version : 10.11.1.1 - (1616546)
[14-07-2016 9:16:14:413 BST] 0000005a InternalGener I   DSRA8205I: JDBC driver name  : Apache Derby Embedded JDBC Driver
[14-07-2016 9:16:14:414 BST] 0000005a InternalGener I   DSRA8206I: JDBC driver version  : 10.11.1.1 - (1616546)
[14-07-2016 9:16:14:414 BST] 0000005a InternalGener I   DSRA8218I: JDBC driver specification level  : 4.2
[14-07-2016 9:16:14:773 BST] 0000005a WASSchedulerC I   SCHD0100I: Scheduler tables verified successfully.

正如您在第2行和第3行所看到的,服务器等待超过一分钟。 没有任何异常或任何其他可能表明存在问题的信息。

有谁知道可能是什么问题?

编辑#1:

根据XSurgent的建议,我已禁用我的应用程序自动启动并重新启动服务器。启动时间是正常的,但表明Apache Derby正在启动的行不再可见,这似乎表明Derby启动正在消耗所有时间。我的推理是否有意义?

编辑#2:

我已经将EJB Timer更改为使用不同的数据库(Oracle而不是嵌入式Derby),但仍然会发生1分钟的延迟。

2 个答案:

答案 0 :(得分:5)

对于包含大型Web模块的应用程序,应用程序启动时间会增加。 ("大"意思是有很多类,通常是因为许多JAR文件都打包在Web模块中。)增加的一个原因是新的类信息扫描以检测CDI内容。例如,要检测@Inject注释。

扫描是必需的 - 即使对于不包含CDI内容的模块 - 也需要扫描以满足新CDI 1.2功能的规范要求。扫描的成本与扫描的模块中的类数成比例。

为了提高启动性能,引入了两个属性来禁用不包含CDI内容的应用程序的CDI处理。有关属性和使用说明的说明,请参阅此技术说明:

http://www-01.ibm.com/support/docview.wss?uid=swg21983564

这两个属性是:

As a java custom property: "com.ibm.ws.cdi.enableImplicitBeanArchives"
As a filter property: "Enable-Implicit-Bean-Archive"  

As a java custom property: "com.ibm.ws.cdi.enableCDI"
As a filter property: "Enable-CDI"

这里" java自定义属性"表示在服务器进程中设置的属性。请注意,这必须在服务器配置中完成:在启动脚本中设置属性只会影响启动过程,而不是服务器进程。

"过滤属性"表示可以在文件中设置的属性" amm.filter.properties"或者可以在Java EE归档(EAR / WAR / RAR / JAR文件)中设置的清单主属性。 (技术说明中提供了有关设置过滤器属性的更详细说明。)

以下是属性及其含义的摘要:

Name: com.ibm.ws.cdi.enableImplicitBeanArchives, Enable-Implicit-Bean-Archive
Allowed Values: true, false
Default Value: true
Description: By setting the property to false, CDI-related annotation scanning steps are disabled for archives that do not contain a bean descriptor (beans.xml).

Name: com.ibm.ws.cdi.enableCDI, Enable-CDI
Allowed Values: true, false
Default Value: true
Description: By setting the property to false, all CDI steps are disabled for the archive.

使用哪个属性取决于具体要求:如果要为服务器进程禁用所有CDI功能,请设置java自定义属性。设置清单主要属性以禁用特定应用程序或模块的CDI功能。

判断CDI是否导致启动时间增加的一种方法是收集线程转储并查找类似于以下内容的调用堆栈:

4XESTACKTRACE                at com/ibm/ws/jsf/ext/JSFInjectionClassListCollaborator.getInjectionClasses(JSFInjectionClassListCollaborator.java:105)
4XESTACKTRACE                at com/ibm/ws/cdi/classic/CDIArchiveImpl.getInjectionClassList(CDIArchiveImpl.java:77)
4XESTACKTRACE                at com/ibm/ws/cdi/impl/weld/BeanDeploymentArchiveImpl.initializeJEEComponentClasses(BeanDeploymentArchiveImpl.java:349)
4XESTACKTRACE                at com/ibm/ws/cdi/impl/weld/BeanDeploymentArchiveImpl.scan(BeanDeploymentArchiveImpl.java:281)
4XESTACKTRACE                at com/ibm/ws/cdi/impl/weld/BeanDeploymentArchiveImpl.scan(BeanDeploymentArchiveImpl.java:255)
4XESTACKTRACE                at com/ibm/ws/cdi/impl/weld/WebSphereCDIDeploymentImpl.scan(WebSphereCDIDeploymentImpl.java:530)
4XESTACKTRACE                at com/ibm/ws/cdi/impl/CDIContainerImpl.applicationStarting(CDIContainerImpl.java:117)
4XESTACKTRACE                at com/ibm/ws/cdi/classic/CDIRuntimeImpl.applicationStarting(CDIRuntimeImpl.java:323)

Thomas Bitonti,IBM公司,IBM WebSphere Application Server开发人员

答案 1 :(得分:0)

使其更简单:如果您不使用JEE annontations(例如,您基于JAX-RS或Spring的服务),您可以关闭CDI扫描: 如果您部署了WAR文件,请注入WAR#/ META-INF / MANIFEST-MF这一行:Ignore-Scanning-Packages:org,net,com,javax 当然,您决定决定从CDI扫描中排除哪些Java包。

我的例子:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: ti
Build-Jdk: 1.7.0_45
Ignore-Scanning-Packages: org, net, com ,javax

如果您部署了EAR文件: 在其清单中注入另一行:启用-CDI:false

如果你想在服务器上进行全局更改而不更改WAR文件编辑(如果缺少则创建):/ opt / IBM / WebSphere / AppServer / profiles / AppSrv01 / properties / amm.filter.properties并在那里添加行: com.ibm.ws.amm.scan.context.filter.packages = com的,组织,网,的javax