如何在Websphere 9.0.0.2中解决慢速问题

时间:2019-10-23 15:35:04

标签: websphere

嗨,我正在使用Websphere 9.0.0.2开发一个项目 而且我在部署和应用程序方面遇到问题 更新时间。我的申请大约需要15-20 分钟即可部署。

我在站点https://www.ibm.com/developerworks/community/forums/html/topic?id=92094a07-b456-4f6f-89cd-7b6e59a0b1a3上执行通知 在JVM中设置这些属性

com.ibm.ws.cdi.enableImplicitBeanArchives = false和

com.ibm.ws.cdi.enableImplicitBeanArchives = false com.ibm.ws.amm.scan.context.filter.archives = fastjson-1.1.37.jar,flexjson-2.1.jar,guava-18.0.jar,mvel2-2.2.0.Final.jar

但不幸的是没有成功

有人对如何确定根本原因有任何建议吗?

预先感谢

1 个答案:

答案 0 :(得分:2)

首先,如果您安装了最新的修订包,有时您的问题将简单地消失。 V9.0.0.2非常旧。 9.0早期的版本中存在一些性能问题。当前的修订包是9.0.5.1。

要调试性能问题,请关闭所有跟踪并定期收集Java线程转储。我希望至少看到10个,但是更好。只需将您关心的时间间隔至少除以10。对于需要15分钟的操作,请至少每1.5分钟(90秒)生成一个线程转储。

如果使用Linux,则可以使用watch命令。例如,要每30秒创建一个转储:

watch -n 30 kill -3 <PROCESS_NUMBER_OF_APP_SERVER>

有一个针对Linux的详细脚本,其中包含更多选项at this link

如果使用Windows,则可以使用wsadmin和Jython脚本自动执行线程转储。例如,将以下内容放入文件中 名为ThirtyThreadDumps.py(用“ server1”替换正确的服务器名称):

jvm = AdminControl.completeObjectName('type=JVM,process=server1,*')
for x in range(30):
AdminControl.invoke(jvm, 'dumpThreads')
Sleep(30)

使用wsadmin调用jython脚本:

wsadmin -lang jython -f  ThirtyThreadDumps.py

在线程转储中,查找出现在多个转储中的堆栈。我发现部署期间相关的WebSphere堆栈至少有15个调用,通常更多。因此,我通常滚动浏览转储的stacktrace部分,直到视觉上弹出一个深层堆栈。然后,我在堆栈中选择一行或2行并进行搜索(grep或findstr取决于平台)。这样可以快速告诉您堆栈是否出现在多个线程转储中。

最终,这将向您显示哪个WebSphere代码是罪魁祸首,这可能会或可能不会帮助您,这取决于堆栈中WebSphere类和方法的名称有多好。

下一步是致电IBM。如果您已经有了线程转储,那么您的案例应该会更快。

请记住,创建线程转储时不要运行任何日志记录/跟踪很重要。否则,您将只知道日志记录和跟踪是性能问题。

相关问题