openresty 火焰图

安装环境

操作系统:CentOS Linux release 7.6.1810 (Core)
openresty:nginx version: openresty/1.15.8.2

安装流程

1. 查看操作系统发行编号

[root@local FlameGraph]# uname -r
3.10.0-1127.13.1.el7.x86_64

2. 下载相关工具包

包名地址
kernel-debuginfo-common-$(uname -r).rpmhttp://linuxsoft.cern.ch/centos-debuginfo/7/x86_64/
kernel-debuginfo-$(uname -r).rpmhttp://debuginfo.centos.org/7/x86_64/
kernel-devel-$(uname -r).rpmhttp://rpm.pbone.net/

若下载地址速度慢或没有对应版本的包请自行搜索

3. 安装工具包

[root@local FlameGraph]# rpm -ivh kernel-debuginfo-common-x86_64-3.10.0-1127.13.1.el7.x86_64.rpm
[root@local FlameGraph]# rpm -ivh kernel-debuginfo-3.10.0-1127.13.1.el7.x86_64.rpm
[root@local FlameGraph]# rpm -ivh kernel-devel-3.10.0-1127.13.1.el7.x86_64.rpm

4. 安装systemtap

[root@local FlameGraph]#  yum install systemtap -y

5. 验证systemtap是否可用

[root@local FlameGraph]#  stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'

在这里插入图片描述如上验证通过。

6. 下载火焰图绘制工具

[root@local FlameGraph]#  git clone https://github.com/openresty/nginx-systemtap-toolkit.git
[root@local FlameGraph]#  git clone https://github.com/brendangregg/FlameGraph.git

7. 绘制火焰图

(1) 通过另一台服务器对openresty进行压测,推荐使用wrk

 wrk -t16 -c300 -d30s  http://www.testsites.com/

(2)查看nginx进程编号

[root@local FlameGraph]# ps -ef | grep nginx

在这里插入图片描述选择一个work进程就好

(3)抓取堆栈信息绘制火焰图

[root@local FlameGraph]# ./openresty-systemtap-toolkit-master/ngx-sample-lua-bt -p 7617 --luajit20 -t 10 >nginx.bt
[root@local FlameGraph]# ./openresty-systemtap-toolkit-master/fix-lua-bt nginx.bt > flame.bt
[root@local FlameGraph]# ./FlameGraph-master/stackcollapse-stap.pl flame.bt > flame.cbt
[root@local FlameGraph]# ./FlameGraph-master/flamegraph.pl flame.cbt > flame.svg

其中:
ngx-sample-lua-bt 用来抓取lua级别的运行堆栈
sample-bt 用来抓取C级别的运行堆栈 (抓取C堆栈时,fix-lua-bt不需要执行)
flame.svg即为生成的火焰图,直接用浏览器打开即可
在这里插入图片描述
注意事项

openresty/1.15.8.1及之后的版本在x86_64体系结构中默认开启了luajit的gc64,而ngx-sample-lua-bt不支持,需要将其关掉,否者会出错,如下:
在这里插入图片描述

因此在编译安装openresty时添加 --without-luajit-gc64选项

另,openresty官方提供了一款商用版本的性能分析工具XRay支持gc64,可申请试用。

参考链接:
https://kernel.blog.csdn.net/article/details/78885908?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

https://blog.csdn.net/qq_42353939/article/details/107491914

https://www.cnblogs.com/wuweidong/p/12468401.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值