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

问题描述 投票:1回答:1

如何正确测量按组件分组的Spring Web应用程序的启动时间?

理想情况下,我想获得系统信息(例如类加载时间,按包)和组件信息(bean /应用程序加载),以及显示每个bean /组件/类/包的加载时间的时间线。

Chrome Timeline是我正在寻找的一个很好的例子。

VisualVM / JConsole剖析器显示方法时间,不对任何内容进行分组,这使得它们不适合我的想法。

java spring jvm
1个回答
0
投票

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

以下说明仅适用于Linux:

  1. 克隆lightweight-java-profiler git clone https://github.com/dcapwell/lightweight-java-profiler
  2. 建立它: cd lightweight-java-profiler make cd ..
  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轴上: Example generated flame graph
© www.soinside.com 2019 - 2024. All rights reserved.