Jvm Websphere8.5中的性能问题

Jvm Websphere8.5中的性能问题,jvm,websphere,heap-memory,jsf-1.2,thread-dump,Jvm,Websphere,Heap Memory,Jsf 1.2,Thread Dump,我们将web应用程序从jsf1.0迁移到1.2,并部署在WebSphere8.5中。早期的应用程序部署在Websphere6.0中。我们在浸泡测试期间面临性能问题。在sysout日志中得到了一些线程挂起的消息,我还观察到线程转储文件中有很多阻塞线程,并且线程被按时释放。 应用程序性能会随时间降低。我可以看到,即使应用程序闲置1天,性能问题仍然保持不变 主要问题是高CPU使用率和高JVM内存,即使应用程序空闲1天也不例外。服务器重启后,应用程序运行速度很快。GC是否会在1天内不清除JVM内存,或者

我们将web应用程序从jsf1.0迁移到1.2,并部署在WebSphere8.5中。早期的应用程序部署在Websphere6.0中。我们在浸泡测试期间面临性能问题。在sysout日志中得到了一些线程挂起的消息,我还观察到线程转储文件中有很多阻塞线程,并且线程被按时释放。 应用程序性能会随时间降低。我可以看到,即使应用程序闲置1天,性能问题仍然保持不变


主要问题是高CPU使用率和高JVM内存,即使应用程序空闲1天也不例外。服务器重启后,应用程序运行速度很快。GC是否会在1天内不清除JVM内存,或者为什么这个CPU很高?

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


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

Gary,感谢您的输入。浸泡试验在第1天完成,第2天应用闲置,第3天我可以观察应用缓慢。在第三天尝试运行应用程序之前,我可以看到堆中40%的可用空间。虽然在浸泡试验期间,我可以看到应用程序性能快速提高,但为什么应用程序在第三天会变慢。当jvm重新启动时,它可以正常工作。如何监视堆中的可用空间?系统上还运行什么?是否有可能其他进程占用cpu并影响应用程序性能?如果java进程在空闲时已全部或部分地交换到磁盘,则可能会出现这种描述(空闲一天后变慢)。这可以由操作系统完成,如果在虚拟机中运行,也可以由虚拟机监控程序完成。您可以通过使用NMON(Linux版)或类似工具监视系统运行状况,定期将文件写入磁盘来检查这一点。交换行为也可以被看作是无法解释的长GC暂停。