Flame Graph позволяет визуально увидеть чем были заняты процессоры в течении определенного периода.
Снять Flame Graph можно по классической инструкции: https://github.com/BrendanGregg/FlameGraph, что требует некоторых манипуляций.
Но можно пойти более легким путем, используя async-profiler:
- Скачиваем стабильный релиз в виде архива
- Распаковываем архив
- Выполняем команду:
./profiler.sh -d 30 -f /tmp/flamegraph.svg
Где <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
p.s. Этому блогу исполнилось 7 лет!