gpt4 book ai didi

WebSphere 9 启动时间过长

转载 作者:行者123 更新时间:2023-12-04 19:00:27 29 4
gpt4 key购买 nike

我正在测试驱动 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 计时器以使用不同的数据库(Oracle 而不是嵌入式 Derby),但 1 分钟的延迟仍在发生。

最佳答案

对于包含大型 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 文件)中设置的 list 主要属性。 (技术说明中提供了有关设置过滤器属性的更详细说明。)

以下是属性及其含义的摘要:
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 自定义属性。设置 list 主要属性以禁用特定应用程序或模块的 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 开发人员

关于WebSphere 9 启动时间过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38369199/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com