1 下载编译async-profiler
git clone https://github.com/jvm-profiling-tools/async-profiler
cd async-profiler
make all
2 获取java进程的pid
ps aux | grep product
/dir/to/async-profiler/profiler.sh -d 30 -f /tmp/flamegraph.svg {pid}
sh profiler.sh -d 30 -f /tmp/flamegraph.svg {pid}
3 采集数据生成火焰图
-d:采集数据持续时间(秒)
-f:火焰图存储文件名
pid:要采集的进程pid
更多用法: [https://github.com/jvm-profiling-tools/async-profiler](https://github.com/jvm-profiling-tools/async-profiler)
4 打开浏览器查看火焰图
高度表示调用栈的深度
宽度表示cpu采样占比,越宽表示采样越多,注意,宽度不代表时间占比,IO等待是体现不出来的
颜色是为了好看。