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

时间:2019-03-09 13:13:20

标签: java spring jvm

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

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

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

VisualVM / JConsole探查器显示方法时间并且不分组任何内容,这使它们不适合我的想法。

1 个答案:

答案 0 :(得分: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