【问题标题】:Performance issue in Websphere8.5Websphere8.5 中的性能问题
【发布时间】:2018-05-19 16:43:12
【问题描述】:

我们将 Web 应用程序从 jsf1.0 迁移到 1.2 并部署在 Websphere 8.5 中。早期的应用程序部署在 Websphere6.0 中。我们在 SOAK 测试期间面临性能问题。在 sysout 日志中收到一些线程挂起消息,我也观察到线程转储文件中有很多阻塞线程并按时释放。 应用程序性能会按时下降。我可以看到即使应用程序空闲 1 天,性能问题仍然相同。

主要问题是高 CPU 使用率和高 JVM 内存,即使应用程序空闲 1 天。重新启动服务器后应用程序很快。 GC会不会1天清空JVM内存或者这个CPU为什么高?

【问题讨论】:

    标签: jvm websphere heap-memory jsf-1.2 thread-dump


    【解决方案1】:

    高 cpu 和低/下降的应用程序吞吐量是典型的 java 堆耗尽,当 JVM 花费大部分时间运行 GC 试图清理堆中的空间以执行实际工作时。您应该启用详细的 GC 日志记录,GC 日志将显示堆状态和 GC 活动。如果在全局/完整 GC 之后堆的使用期限/OldGen 空闲率低于 10%(假设使用默认的 gencon 收集器),则您处于堆耗尽状态。

    您可以尝试增加堆大小,也许它只需要比当前提供的更多空间。如果堆使用(全局使用后的使用期限)随着时间的推移继续攀升,当提供的工作负载稳定/恒定时,则应用程序可能存在内存泄漏。当服务器接近堆耗尽状态时,可以通过获取核心/系统转储来查看堆中累积的对象,并使用例如检查转储。 Eclipse 内存分析器。

    【讨论】:

    • 加里,感谢您的意见。第 1 天完成 SOAK 测试,第 2 天应用程序处于空闲状态,第 3 天我可以观察到应用程序运行缓慢。在我尝试在第 3 天访问应用程序之前,我可以看到堆中有 40% 的可用空间。尽管我可以在 Soak 测试期间看到应用程序性能的快速提升,但为什么应用程序在第 3 天变慢了。 jvm重启后就可以正常使用了。
    • 如何监控堆中的可用空间?系统上还在运行什么?是否有其他进程占用 CPU 并影响您的应用程序性能?如果 java 进程在空闲时已全部或部分换出到磁盘,则可能会出现此描述(空闲一天后变慢)。这可以由操作系统完成,如果在虚拟机中运行,则可以由管理程序完成。您可以通过使用 NMON(适用于 Linux)或类似工具监控系统运行状况,定期将文件写入磁盘来检查这一点。换出行为也可以看作是无法解释的长时间 GC 暂停。
    猜你喜欢
    • 2016-11-15
    • 2019-03-27
    • 2016-09-06
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    相关资源
    最近更新 更多