原由

最近因为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性能分析之火焰图的更多相关文章

  1. Linux性能分析利器——火焰图的安装使用

    火焰图(flame graph)是性能分析的利器,通过它可以快速定位性能瓶颈点. perf 命令(performance 的缩写)是 Linux 系统原生提供的性能分析工具,会返回 CPU 正在执行的 ...

  2. 超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下

    如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然.别慌,这里有一款低开销.自带火焰图.让你大呼好用的 Java 性能分析工具 - async ...

  3. Java程序性能定位工具-火焰图

    Java程序性能定位工具-火焰图 前言 Java火焰图是一种新的查看CPU利用率方式.今天就带大家一起使用来自Google大神的工具来生成火焰图.火焰图非常的直观,问题一目了然,希望有一天它能成为JA ...

  4. Java 性能分析工具 , 第 3 部分: Java Mission Control

    引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...

  5. Java 性能分析工具 , 第 2 部分:Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

  6. Java性能分析之线程栈详解与性能分析

    Java性能分析之线程栈详解 Java性能分析迈不过去的一个关键点是线程栈,新的性能班级也讲到了JVM这一块,所以本篇文章对线程栈进行基础知识普及以及如何对线程栈进行性能分析. 基本概念 线程堆栈也称 ...

  7. 浅谈java性能分析

    浅谈java性能分析,效能分析 在老师强烈的要求下做了效能分析,对上次写过的词频统计的程序进行分析以及改进. 对于效能分析:我个人很浅显的认为就是程序的运行效率,代码的执行效率等等. java做性能测 ...

  8. Java性能分析神器--VisualVM Launcher[1]

    Java性能分析神器1--VisualVM Launcher VisualVM 当你日复一日敲代码的时候,当你把各种各样的框架集成到一起的时候,看着大功告成成功运行的日志,有没有那么一丝丝迷茫和惆怅: ...

  9. Java 性能分析工具 , 第 1 部分: 操作系统工具

    引言 性能分析的前提是将应用程序内部的运行状况以及应用运行环境的状况以一种可视化的方式更加直接的展现出来,如何来达到这种可视化的展示呢?我们需要配合使用操作系统中集成的程序监控工具和 Java 中内置 ...

随机推荐

  1. Tomcat7.0.99集群使用Redis共享session方案

    以前配置过给予多播的session共享方案,这回再配置一个redis共享session的. 先小小的炫耀一下: 相信大家要做Tomcat+Redis+session配置,遇到的头号麻烦就是编译的tom ...

  2. redis锁操作

    模拟多线程触发 package com.ws.controller; import io.swagger.annotations.Api; import io.swagger.annotations. ...

  3. 仿VISIO连线

    说明: 1.未实现障碍物自动避让功能: 2.未实现添加图元到连线之间,连线自动避开新增图元功能: 后续再完善... version 1: package com.sunsheen.jfids.stud ...

  4. Linux:nginx负载均衡

    前提:web服务器框架已搭建好lamp/lnmp),已配置好虚拟主机名(这个的配置在上几章中有写). nginx做负载均衡主要的模块是upstream. 1.在新的机器上安装nginx 创建用户ngi ...

  5. JS语法_集合

    数组方法 forEach // no-log Array.prototype.forEach_ = function (cb) { let len = this.length for (let i = ...

  6. MySQL关于useSSL的问题,会弹出警告

    我在手动配置dbcp时,执行数据库相关的操作时,报错以下: Fri Aug 28 21:10:19 CST 2020 WARN: Establishing SSL connection without ...

  7. pytest文档3-pytest+Allure+jenkins+邮箱发送

    前言: 虽然网上有很多邮件配置的文章,但还是想自己写一下配置的过程,因为在中间也碰到了不同坑.按照这个文档配置的话,99%都可以成功.   一.jenkins 配置邮箱 1.打开jenkins后进入点 ...

  8. 【二叉树-所有路经系列(根->叶子)】二叉树的所有路径、路径总和 II、路径总和、求根到叶子节点数字之和(DFS)

    总述 全部用DFS来做 重点一:参数的设置:为Root,路径字符串,路径List集合. 重点二:步骤: 1 节点为null 2 所有节点的操作 3 叶子结点的操作 4 非叶节点的操作 题目257. 二 ...

  9. [剑指Offer]30-包含min函数的栈

    题目 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 题解 辅助栈记录当前最小值. 代码 import java.util.Stack; pub ...

  10. Kafka 【入门一篇文章就够了】

    初识 Kafka 什么是 kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区.多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订 ...