[转帖]java性能分析之火焰图

java,性能,分析,火焰 · 浏览次数 : 0

小编点评

## 火焰图生成指南 **引言** 由于kafka、zookeeper、ES和相关的Java应用的内存问题搞的头大,做运维将近4年,对Java调优、性能方面的知识了解的少之又少,是时候下定决心来对他多一个学习了。 **结果** * 实现1:安装依赖包 * 安装2:分析和生成火焰图 * 生成火焰图: * 使用perf-map-agent工具 * 使用jmaps工具 * 使用FlameGraph工具 **步骤** **1. 安装依赖包** * yum -y install gityum install gcc gcc-c++yum install perf2 * 安装perf-map-agentgit clone --depth=1 https://github.com/jvm-profiling-tools/perf-map-agentcd perf-map-agentcmake . **2. 分析和生成火焰图** * git clone --depth=1 https://github.com/brendangregg/FlameGraph * 运行record命令生成火焰图: ```bash ./FlameGraph/jmapsperf script > out.stacks01cat out.stacks01 | ./FlameGraph/stackcollapse-perf.pl | grep -v cpu_idle | ./FlameGraph/flamegraph.pl --color=java --hash > out.stacks01.svg ``` * 将out.stacks01.svg保存为out.stacks01.svg **3. 生成火焰图** * 使用FlameGraph工具将out.stacks01.svg转换为png图片: ```bash ./FlameGraph/flamegraph.pl --color=java --hash -o flamegraph.png out.stacks01.svg ``` **总结** 完成以上步骤后,可以在images/flamegraph目录中找到生成的火焰图。

正文

  • http://t.zoukankan.com/lemon-le-p-13820204.html

     

     

    原由

    最近因为kafka、zookeeper、ES和相关的Java应用的内存问题搞的头大,做运维将近4年,对Java调优、性能方面的知识了解的少之又少,是时候下定决心来对他多一个学习了。不能一口吃成一个胖子,每天学一点学一点。Brendan D. Gregg他真的是我膜拜膜拜又膜拜的偶像,他的博客里有很多很多的干货,也一直还没全面的学习,强烈推荐http://www.brendangregg.com/index.html。也是看了他的博客和相关书籍,里面的火焰图看起来就很牛逼,于是就想着理论结合实践动起来。
     

    前言

    这里先记录怎么把火焰图弄出来,具体的原理及其分析后续一点一点的磕,一点一点的补,具体的步骤入下。
     

    结果

     

    实现

    1、安装依赖包
    yum -y install git
    yum install gcc gcc-c++
    yum install perf
    2、安装perf-map-agent
    git clone --depth=1 https://github.com/jvm-profiling-tools/perf-map-agent
    cd perf-map-agent
    cmake . (这里记得系统需要有JAVA_HOME的环境变量,可以通过echo $JAVA_HOME看你的系统是否已经有了)
    make
    3、分析和生成火焰图
    git clone --depth=1 https://github.com/brendangregg/FlameGraph
    perf record -F 49 -a -g -- sleep 30; ./FlameGraph/jmaps
    perf script > out.stacks01
    cat out.stacks01 | ./FlameGraph/stackcollapse-perf.pl | grep -v cpu_idle | ./FlameGraph/flamegraph.pl --color=java --hash > out.stacks01.svg
    注:vim ./FlameGraph/jmaps 文件的AGENT_HOME要改成自己第二步安装的目录
     
     

    相关链接

与[转帖]java性能分析之火焰图相似的内容:

[转帖]java性能分析之火焰图

http://t.zoukankan.com/lemon-le-p-13820204.html 原由 最近因为kafka、zookeeper、ES和相关的Java应用的内存问题搞的头大,做运维将近4年,对Java调优、性能方面的知识了解的少之又少,是时候下定决心来对他多一个学习了。不能一口吃成一个胖

[转帖]【初探】java性能火焰图的生成

https://www.cnblogs.com/hama1993/p/10580581.html 一、前言 开始之前,你需要准备的环境: Linux系统机器或者虚拟机一台,里面需要安装的软件:git、jdk、perl。 二、简单介绍 java性能分析火焰图的所做的事情就是能够分析出java程序运行期

[转帖]【初探】java性能火焰图的生成

https://www.cnblogs.com/hama1993/p/10580581.html 一、前言 开始之前,你需要准备的环境: Linux系统机器或者虚拟机一台,里面需要安装的软件:git、jdk、perl。 二、简单介绍 java性能分析火焰图的所做的事情就是能够分析出java程序运行期

[转帖]人工智能 Java混合模式火焰图

https://www.dazhuanlan.com/smallnight/topics/1040103 在做性能调优的时候,我们通常会借助一些性能分析工具(比如 perf,DTrace)分析系统资源的使用情况,比如 CPU、内存等,但这些工具分析的结果通常是文本形式,不够直观,不便于快速定位系统瓶

[转帖]人工智能 Java混合模式火焰图

https://www.dazhuanlan.com/smallnight/topics/1040103 在做性能调优的时候,我们通常会借助一些性能分析工具(比如 perf,DTrace)分析系统资源的使用情况,比如 CPU、内存等,但这些工具分析的结果通常是文本形式,不够直观,不便于快速定位系统瓶

[转帖]引人入胜,实战讲解“Java性能调优六大工具”之linux命令行工具

Java性能调优六大工具之Linux命令行工具 为了能准确获得程序的性能信息,需要使用各种辅助工具。本章将着重介绍用于系统性能分析的各种工具。熟练掌握这些工具,对性能瓶颈定位和系统故障排查都很有帮助。 1,Linux命令行工具2, Windows工具3,JDK命令行工具4,JConsole工具5,

[转帖]发布即巅峰!万字长文:Java性能调优六大工具:MAT内存分析工具

jianshu.com/p/4ed3dd8b7b83 MAT是MemoryAnalyzerTool的简称,它是一款功能强大的Java堆内存分析器,可以用于查找内存泄漏以及查看内存消耗情况。MAT是 基于Eclipse开发的一款免费的性能分析工具,读者可以在http://www.eclipse.org

[转帖]Java方法的JIT编译

https://www.jianshu.com/p/a6275e239eac Java方法执行一般会利用分层编译,先通过c1解释执行。方法执行编译等级逐渐提升,有机会通过JIT编译为特定平台汇编执行,以此获得最好的性能。 方法执行除了达到一定热度外,是否JIT编译也受到以下两个参数影响: -XX:+

[转帖]揭密Java常用性能调优工具的底层实现原理

https://zhuanlan.zhihu.com/p/547081135 本文来自于社区专家鸠摩【《深入剖析Java虚拟机:源码剖析与实例详解》作者】的独家干货,更多文章可去专家主页:鸠摩主页 | HeapDump性能社区 正文: 当Java虚拟机出现故障和性能问题时,我们通常会借助一些业界知名

[转帖]用实力诠释细节!“Java性能调优六大工具”之JDK命令行工具

https://www.zhihu.com/people/javajia-gou-ji-zhu-44/posts JDK命令行工具 在JDK的开发包中,除了大家熟知的java.exe和javac.exe外,还有一系列辅助工具。这些辅助工具位于JDK安装目录下的bin目录中,可以帮助开发人员很好地解决