为了账号安全,请及时绑定邮箱和手机立即绑定

如何测量 Spring Web 应用程序中的组件启动时间?

如何测量 Spring Web 应用程序中的组件启动时间?

海绵宝宝撒 2022-07-27 19:52:56
如何正确测量按组件分组的 Spring Web 应用程序的启动时间?理想情况下,我想同时获取系统信息(例如类加载时间,按包)和组件信息(bean/应用程序加载),以及显示每个 bean/组件/类/包的加载时间的时间线。Chrome 时间轴是我正在寻找的一个很好的例子。VisualVM/JConsole 分析器显示方法时间并且不分组任何东西,这使得它们不适合我的想法。
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

目前,我能找到的最佳答案是使用 Brendan Gregg 的Java Flame Graphs帖子中的信息。这并不简单,但它是一个开始。

以下说明仅适用于 Linux:

  1. 克隆轻量级 java-profiler

    git clone https://github.com/dcapwell/lightweight-java-profiler
  2. 构建它:

    cd lightweight-java-profilermakecd ..
  3. 使用附加-agentpath开关启动应用程序,然后在完成分析后退出它:

    java -jar -agentpath:lightweight-java-profiler/build-64/liblagent.so /path/to/your-webapp.jar

    traces.txt在此之后,您应该在当前目录中找到一个名为的文件。

  4. 下载 Brendan Gregg 的 FlameGraph 工具:

    git clone http://github.com/brendangregg/FlameGraph
  5. 执行提供的脚本将跟踪文件转换为 SVG 文件:

    cd FlameGraph./stackcollapse-ljp.awk < ../traces.txt | ./flamegraph.pl > ../traces.svg
  6. 在 Firefox 中打开 SVG 文件;X 轴是样本数(100% 对应于总分析时间),方法调用堆叠在 Y 轴上:

//img1.sycdn.imooc.com//62e1273300015b6811960494.jpg

查看完整回答
反对 回复 2022-07-27
  • 1 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信