Java 分析 - 检测导致峰值的原因

标签 java jakarta-ee profiling profiler jvisualvm

我正在尝试检测导致部署在 Jboss 中的 Java Struts 基础 Web 应用程序出现大量峰值的原因。我已经使用 Yourkit 和 VisualVM 来获取转储并分析了转储,但这些峰值是暂时的,当转储完成时,什么也没有留下。

问题是 - 有没有办法检测导致运行时峰值的原因?

最佳答案

这里有一些想法:

  • 检查您的请求日志,看看峰值与请求量或特定请求类型是否存在相关性。

  • 在启用 GC 日志记录的情况下运行 JVM 并查找相关性。

  • 在应用程序中启用调试级别日志记录并查找相关性。 (对此要小心,因为打开更多应用程序日志记录可能会改变性能特征。)

  • (在 Linux/Unix 上)运行 vmstat 和 iostat 并查找与额外磁盘 Activity 或交换/分页的相关性。


如果对象创建率或非垃圾对象的数量/大小出现峰值,这很可能是由您的应用程序而不是 JVM 或操作系统引起的。这很可能是由于应用程序工作负载性质的短暂变化所致;例如请求激增,或者存在一些涉及创建大量对象的异常请求。重点关注请求和应用程序日志。

关于Java 分析 - 检测导致峰值的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14503138/

相关文章:

java - 可变参数和 '...' 参数

java - 为什么不能在类级别使用 System.setProperty?

java - 如何构建三层 Web 服务

python - 配置文件 Python 导入时间

java - 在 java/swing 中关闭窗口时正确的操作是什么?

java - 相关字段的验证

jsf - 在 JSF 中使用 JSTL 函数

python - cProfile 报告几乎所有时间都花在 <string> :1(<lambda>) 上

c++ - frame_dummy 在分析上下文中意味着什么?

java - 应用程序读取错误短信