1、下载systemtap安装包并安装

https://sourceware.org/systemtap/ftp/releases/下载最新版的systemtap.tar.gz压缩包

我安装的时候,最新版本是3.2

wget https://sourceware.org/systemtap/ftp/releases/systemtap-3.2.tar.gz --no-check-certificate

解压

./configure

报错1

configure: error: missing elfutils development headers/libraries (install elfutils-devel, libebl-dev, libdw-dev and/or libebl-devel)

yum install elfutils-devel

报错2

configure:
configure: For a private or temporary build of systemtap, we recommend
configure: configuring with a prefix. For example, try
configure: ./configure python='/usr/bin/python' pyexecdir='${exec_prefix}/lib64/python2.6/site-packages' --prefix=/root/systemtap-3.2-9194
configure: Running systemtap uninstalled, entirely out of the build tree,
configure: is not supported.

./configure python='/usr/bin/python' pyexecdir='${exec_prefix}/lib64/python2.6/site-packages' --prefix=/root/systemtap-3.2-9194

make; make install

安装完成之后,在systemtap目录下,执行

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

如果提示pass 5: run completed ... 就表示安装成功。

2、下载

该工具包即是用perl生成stap探测脚本并运行的脚本,如果是要抓Lua级别的情况,请使用工具 ngx-sample-lua-bt

wget https://github.com/brendangregg/openresty-systemtap-toolkit/archive/master.zip --no-check-certificate

该工具包中包含多个火焰图生成工具,其中,stackcollapse-stap.pl才是为SystemTap抓取的栈信息的生成工具

wget https://github.com/brendangregg/FlameGraph/archive/master.zip --no-check-certificate

3、测试

ps -ef|grep nginx

查询nginx worker process的进程号

在openresty-systemtap-toolkit下

./ngx-sample-lua-bt -p 15010 --luajit20 -t 5 > tmp.bt (-p 是要抓的进程的pid --luajit20|--luajit51 是LuaJIT的版本 -t是探测的时间,单位是秒, 探测结果输出到tmp.bt)

./fix-lua-bt tmp.bt > flame.bt (处理ngx-sample-lua-bt的输出,使其可读性更佳)

在FlameGraph下

./stackcollapse-stap.pl flame.bt > flame.cbt

./flamegraph.pl flame.cbt > flame.svg

如果一切正常,那么会生成flame.svg,这便是火焰图,用浏览器打开即可。

openresty火焰图安装的更多相关文章

  1. 火焰图分析openresty性能瓶颈

    注:本文操作基于CentOS 系统 准备工作 用wget从https://sourceware.org/systemtap/ftp/releases/下载最新版的systemtap.tar.gz压缩包 ...

  2. 火焰图(Flame Graphs)的安装和基本用法

    火焰图(Flame Graphs) 一.概述: 火焰图(flame graph)是性能分析的利器,通过它可以快速定位性能瓶颈点. perf 命令(performance 的缩写)是 Linux 系统原 ...

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

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

  4. linux系统分析工具续-SystemTap和火焰图(Flame Graph)

    本文为网上各位大神文章的综合简单实践篇,参考文章较多,有些总结性东西,自认暂无法详细写出,建议读文中列出的参考文档,相信会受益颇多.下面开始吧(本文出自 “cclo的博客” 博客,请务必保留此出处ht ...

  5. 记一次获得 3 倍性能的 go 程序优化实践,及 on-cpu / off-cpu 火焰图的使用

    转自:https://mp.weixin.qq.com/s/9IKaXeWTiiQTFlvZzxgsEA 记一次获得 3 倍性能的 go 程序优化实践,及 on-cpu / off-cpu 火焰图的使 ...

  6. 火焰图工具 SystemTap

    1. 安装 SystemTap 1. 首先安装内核开发包和调试包: # rpm -ivh kernel-debuginfo-common-($version).rpm # rpm -ivh kerne ...

  7. 动态追踪技术(中) - Dtrace、SystemTap、火焰图

    http://openresty.org/cn/presentations.html http://weibo.com/agentzh?is_all=1 http://openresty.org/po ...

  8. 使用perf生成Flame Graph(火焰图)

      具体的步骤参见这里: <flame graph:图形化perf call stack数据的小工具>   使用SystemTap脚本制作火焰图,内存较少时,分配存储采样的数组可能失败,需 ...

  9. 使用linux perf工具生成java程序火焰图

    pre.cjk { font-family: "Nimbus Mono L", monospace } p { margin-bottom: 0.1in; line-height: ...

随机推荐

  1. 机器人数目-2015决赛Java语言C组第一题

    标题:机器人数目 少年宫新近邮购了小机器人配件,共有3类,其中,A类含有:8个轮子,1个传感器B类含有: 6个轮子,3个传感器C类含有:4个轮子,4个传感器 他们一共订购了100套机器人,收到了轮子6 ...

  2. hdu 1568 (log取对数 / Fib数通项公式)

    hdu 1568 (log取对数 / Fib数通项公式) 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1]= ...

  3. Java - 线程优先级和守护线程

    Java多线程系列--“基础篇”10之 线程优先级和守护线程 概要 本章,会对守护线程和线程优先级进行介绍.涉及到的内容包括:1. 线程优先级的介绍2. 线程优先级的示例3. 守护线程的示例 转载请注 ...

  4. Java - "JUC线程池" ThreadPoolExecutor原理解析

    Java多线程系列--“JUC线程池”02之 线程池原理(一) ThreadPoolExecutor简介 ThreadPoolExecutor是线程池类.对于线程池,可以通俗的将它理解为"存 ...

  5. hadoop配置历史服务器&&配置日志聚集

    配置历史服务器 1.在mapred-site.xml中写入一下配置 <property> <name>mapreduce.jobhistory.address</name ...

  6. HDU4289(KB11-I 最小割)

    Control Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. JS简单验证

    1.验证是否全为数字 2.验证邮箱 3验证手机号 4.验证身份证号 5.验证时间格式 下面是代码,可直接用,有注释 <html> <meta charset="utf-8& ...

  8. JavaScript中何时使用===,何时使用==

    建议尽量都使用===,原因如下: 一致性:使用==对一致性没有任何好处,那么为什么不避免使用呢. 简单和性能:一般来说,===是最简单的操作符,因为它不用进行类型转换.JavaScript引擎的性能参 ...

  9. 借助 Java 9 Jigsaw,如何在 60 秒内创建 JavaFX HelloWorld 程序?

    [编者按]本文作者为 Carl Dea,主要介绍利用 Jigsaw 项目在大约一分钟内编写标准化的"Hello World"消息代码.本文系国内 ITOM 管理平台 OneAPM ...

  10. LeetCode题解之Counting Bits

    1.题目描述 2.问题分析 利用bitset. 3 代码 vector<int> countBits(int num) { vector<int> v; ; i <= n ...