Как измерить время запуска компонента в веб-приложении Spring? - PullRequest
1 голос
/ 09 марта 2019

Как правильно измерить время запуска веб-приложения Spring, сгруппированного по компонентам?

В идеале я хотел бы получить как системную информацию (например, время загрузки класса по пакетам), так и информацию о компоненте (загрузка компонента / приложения), а также временную шкалу, показывающую время загрузки каждого компонента / компонента / класса / пакет.

Хронология Chrome - хороший пример того, что я ищу.

Профилировщики VisualVM / JConsole показывают времена методов и ничего не группируют, что делает их неподходящими для того, что я имею в виду.

1 Ответ

0 голосов
/ 10 марта 2019

На данный момент лучшим ответом, который я смог найти, было использование информации в посте Брэндана Грегга 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. Загрузить инструменты Брендана Грегга FlameGraph:

    git clone http://github.com/brendangregg/FlameGraph
    
  5. Выполните предоставленные сценарии для преобразования файла трассировки в файл SVG:

    cd FlameGraph
    ./stackcollapse-ljp.awk < ../traces.txt | ./flamegraph.pl > ../traces.svg
    
  6. Откройте файл SVG в Firefox;ось X - это число выборок (100% соответствует общему времени профилирования), а вызовы методов суммируются по оси Y:

    Example generated flame graph

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...