我正在尝试检测导致部署在 Jboss 中的 Java Struts 基础 Web 应用程序出现大量峰值的原因。我已经使用 Yourkit 和 VisualVM 来获取转储并分析了转储,但这些峰值是暂时的,当转储完成时,什么也没有留下。
问题是 - 有没有办法检测导致运行时峰值的原因?
最佳答案
这里有一些想法:
检查您的请求日志,看看峰值与请求量或特定请求类型是否存在相关性。
在启用 GC 日志记录的情况下运行 JVM 并查找相关性。
在应用程序中启用调试级别日志记录并查找相关性。 (对此要小心,因为打开更多应用程序日志记录可能会改变性能特征。)
(在 Linux/Unix 上)运行 vmstat 和 iostat 并查找与额外磁盘 Activity 或交换/分页的相关性。
如果对象创建率或非垃圾对象的数量/大小出现峰值,这很可能是由您的应用程序而不是 JVM 或操作系统引起的。这很可能是由于应用程序工作负载性质的短暂变化所致;例如请求激增,或者存在一些涉及创建大量对象的异常请求。重点关注请求和应用程序日志。
关于Java 分析 - 检测导致峰值的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14503138/