【问题标题】:How how to solve slow in websphere 9.0.0.2如何在 websphere 9.0.0.2 中解决缓慢的问题
【发布时间】:2019-10-23 15:35:04
【问题描述】:

您好,我正在使用 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

可惜没成功

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

提前致谢

【问题讨论】:

    标签: websphere


    【解决方案1】:

    首先,如果您安装了最新的修复包,有时您的问题就会消失。 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 个调用深度,而且通常更多。所以我通常会滚动转储的堆栈跟踪部分,直到视觉上弹出一个深堆栈。然后我在堆栈中选择一行或 2 行并搜索(grep 或 findstr 取决于平台)。这将很快告诉您堆栈是否出现在多个线程转储中。

    最终,这将向您展示哪些 WebSphere 代码是罪魁祸首,这可能会或可能不会帮助您,这取决于 WebSphere 类和方法的名称在堆栈中的好坏程度。

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

    请记住,在创建线程转储时不要运行任何日志记录/跟踪,这一点很重要。否则,您只会了解到日志记录和跟踪是一个性能问题。

    【讨论】:

    • Jblye 非常感谢您的反馈,很遗憾在公司机器上我们没有管理员权限来调用建议的文件。我会尝试更新版本。谢谢。
    猜你喜欢
    • 2017-11-13
    • 1970-01-01
    • 2013-01-06
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多