火焰图介绍

看到openresty里用火焰图觉得挺有意思的,又装逼又有用。它可以快速的定位到程序性能的瓶颈,生成程序的调用栈并且计算调用栈中每部分的 CPU 消耗,能够比较容易的找到CPU占用高、内存泄漏等问题。今天在自己以前的项目中测试了下,下面贴个图留个纪念。

这里面不要看颜色,因为颜色是随机搞来的,没有任何意义。要看火焰山上纵向的高度和每个对应的长度。纵向的高度代表函数调用栈的深度,横向长度代表此函数执行占用CPU的比例。

下面来了解下火焰图工具如何安装。

火焰图安装

参考 http://kernelmaker.github.io/...

安装systemtap

其实主要就是安装内核探测工具 systemtap。(SystemTap 通过将脚本语句翻译成C语句,编译成内核模块。模块加载之后,依据时间处理机制来收集有关正在运行的Linux系统的信息)

    1. yum install yum-utils2. yum install kernel-devel3. debuginfo-install kernel4. yum install systemtap

第三步安装失败的话,使用内核版本号找到对应的包进行安装就好了。
完成后输入以下命令进行测试

    stap -ve 'probe begin { log("hello world") exit() }'

如果安装成功则是这样

下载 openresty-systemtap-toolkit

要知道systemtap只是个内核探测工具,不只是可以用在openresty中的,你得自己写好脚本来进行埋点等工作。但是春哥已经在 openresty-systemtap-toolkit 中提供了许多可以直接使用的脚本,我们直接拿过来用就好了,毕竟我自己是不会写的。

下载 FlameGraph

使用上面openresty-systemtap-toolkit这些脚本后,我们其实已经可以拿到我们所需要的信息了,只是还是不够直观,所以我们得用FlameGraph火焰图生成工具来生成直观的图片。

使用示例

1.找到我们要监控的nginx的某个进程
ps -ef | grep nginx

2.ngx-sample-lua-bt 抓取栈信息(这个工具可以看到在某个文件对应行函数的情况)
此处我是把上面下载的openresty-systemtap-toolkitFlameGraph加到环境变量里面去了。所以直接输入命令就行了

ngx-sample-lua-bt -p 19075 --luajit20 -t 5 > temp.bt

3.使用fix-lua-bt把上面得到的文件转化更友好点(直接看到对应的lua函数)

fix-lua-bt temp.bt > a.bt 

4.使用下面两个FlameGraph中的命令将文件转化为svg图片

stackcollapse-stap.pl a.bt > a.cbt
flamegraph.pl a.cbt > a.svg

然后打开a.svg就可以看到火焰图了

在OR项目中使用火焰图相关推荐

  1. Vue项目中Echarts流向图迁徙图实现

    在数据可视化中,地图可视化是高频应用的一种.我们在一些新闻报道和商业杂志上,会经常看到运用地图来分析展示商业现象,这样的利用地图来反映和分析数据的形式叫数据地图.数据地图可以最直观的表达出数据之间的空 ...

  2. vue项目中使用echarts-地图

    vue项目中使用echarts-地图 npm install echarts 在使用的页面或main.js中进行引用 import echarts from "echarts"; ...

  3. vue3+ts项目中使用水球图

    下载水球图 npm install echarts npm install echarts-liquidfill 在对应组件中引入也可在main.ts中引入水球图 import * as echart ...

  4. 使用Telerik控件库制作WPF项目中的折线图、柱状图、饼图和甜甜圈图

    本博客是基于 .Net Framework 4.6.2 的WPF(MVVM)项目,Telerik版本为 2016.2.613.40.其他版本是否可用不详. 本文章所使用数据均为测试数据,无任何意义. ...

  5. echarts迁徙图 vue_【可视化插件】Vue项目中Echarts流向图迁徙图实现

    public render() { //图表绘制方法 this.chart.clear(); const isMock = !this.items.length; const items = isMo ...

  6. flink source 同步_如何生成 Flink 作业的交互式火焰图?

    原标题:如何生成 Flink 作业的交互式火焰图? 简介:Flink 是目前最流行的大数据及流式计算框架之一,用户可以使用 Java/Scala/Python 的 DataStream 接口或者标准 ...

  7. 如何生成 Flink 作业的交互式火焰图?

    简介: Flink 是目前最流行的大数据及流式计算框架之一,用户可以使用 Java/Scala/Python 的 DataStream 接口或者标准 SQL 语言来快速实现一个分布式高可用的流式应用, ...

  8. CentOS 7 Linux实时内核下的epoll性能分析后续 | 火焰图分析

    在<CentOS 7 Linux实时内核下的epoll性能分析>从源码角度分析了epoll在实时内核和非实时内核之间的差异,为了更好的展示问题所在,这里给出epoll和select在实时内 ...

  9. 关于element-ui中轮播图手动切换轮播图片

    文章目录 前言 一.关于element-ui中轮播图手动切换轮播图片 二.解决方案 1.查看element-ui中Carousel 走马灯组件的方法 2.解决方法 结尾 前言 在开发过程中发现项目中轮 ...

最新文章

  1. iis出现 Server Application Error 错误解决方法(xp iis5.1 配置asp项目出现500错)
  2. MyBatis之PageHelper分页操作
  3. SpringCloud微服务带来的问题
  4. Angular 应用级别的依赖 Fake
  5. 剑指offer.机器人的运动范围
  6. 【渝粤教育】广东开放大学 数据结构 形成性考核 (30)
  7. js使用location的方法实验
  8. grafana的+按钮_基于 Prometheus、Grafana 的 EMQ X 物联网 MQTT 服务器可视化运维监控...
  9. 4G通信技术LTE介绍
  10. 将Sublime Text添加到右键菜单中
  11. bzoj4514: [Sdoi2016]数字配对(费用流)
  12. Eclipse导入Ant项目
  13. c++builder 代码格式化工具 AStyle
  14. 金庸群侠传1android,96版金庸群侠传1手机版
  15. 网页自动填表html,韶关网页自动填表基础教程从简单开始 - MutouSoft - 时间财富网...
  16. SpringBoot中Redis报错:NOAUTH Authentication required.; nested exception is redis.clients.jedis.exceptio
  17. Markdown 语法手册 - 完整版(上)
  18. Java中按字母顺序对字符串字符进行排序的4种不同方法
  19. 辅导作业很“崩溃”?猿辅导教你三招告别怒吼式教育
  20. 20220313_朴素贝叶斯

热门文章

  1. spring11:为应用指定多个spring配置文件
  2. Google(谷歌)中国工程研究院 工程师 方坤 对学生朋友的一些建议
  3. COW奶牛!Copy On Write机制了解一下
  4. Oracle 监听器日志配置与管理
  5. 修改input file默认样式
  6. win 2008R2 域的备份与还原
  7. [DiscuzNt]整合DiscuzNt论坛目前所发现的小BUG及个人简单解决办法
  8. Android教程之实现动作感应技术
  9. 固态存储作缓存 提升性能有绝招
  10. [音乐欣赏]Craigie Hill