Flame Graph позволяет визуально увидеть чем были заняты процессоры в течении определенного периода.
Снять Flame Graph можно по классической инструкции: https://github.com/BrendanGregg/FlameGraph, что требует некоторых манипуляций.
Но можно пойти более легким путем, используя async-profiler:
- Скачиваем стабильный релиз в виде архива
- Распаковываем архив
- Выполняем команду:
./profiler.sh -d 30 -f /tmp/flamegraph.svg <PID>
Где <PID> - это идентификатор Java-процесса.
-d 30 - продолжительность профилирования, в секундах.
/tmp/flamegraph.svg - файл сохранения Flame Graph.
Flame Graph можно прекрасно просматрировать в браузере без использования каких-либо дополнительных средств.
В этом можно убедиться на следующем примере Flame Graph (можно кликать на области):
Поиск искомого Java-процесса можно осуществляется через утилиту jps.
Скрипт, автоматизирующий поиск и снятие Flame Graph:
PID=`jps | grep YOUR_APP_NAME | awk '{print $1}'` echo PID = $PID FG=/tmp/flamegraph$PID.svg echo FG = $FG ~/soft/async-profiler-1.6-macos-x64/profiler.sh -d 30 -f $FG $PID |
Добавить комментарий