OpenResty 性能分析实战

  Seves

原文链接:OpenResty 性能分析实战

OpenResty 性能分析实战步骤如下:

安装systemtap

下载systemtap

wget https://sourceware.org/systemtap/ftp/releases/systemtap-2.6.tar.gz

解压systemtap

tar -xvf systemtap-2.6.tar.gz

安装systemtap

cd systemtap-2.6

./configure --prefix=/opt/stap --disable-docs --disable-publican --disable-refdocs CFLAGS="-g -O2"

make -j8

sudo make install

验证

执行以下命令,如果可以看到版本号,代表安装成功
/opt/stap/bin/stap -V

加入环境变量

vim /etc/profile
PATH=$PATH:/opt/stap/bin
export PATH

保存退出

采样及火焰图分析

示例:

1.要对用户空间中正在运行的 Nginx worker 进程(其 pid 为19697)进行总共5秒的采样

下载openresty-systemtap-toolkit

wget https://github.com/openresty/openresty-systemtap-toolkit/archive/master.zip

解压openresty-systemtap-toolkit

mv master.zip openresty-systemtap-toolkit-master.zip
unzip openresty-systemtap-toolkit-master.zip

使用openresty-systemtap-toolkit

cd openresty-systemtap-toolkit-master

./sample-bt -p 19697 -t 5 -u > a1.bt

最终的输出文件 a1.bt 可以使用 Brendan Gregg 的火焰图形工具生成一个火焰图形

下载FlameGraph

wget https://github.com/brendangregg/FlameGraph/archive/master.zip

解压FlameGraph

mv master.zip FlameGraph.zip
unzip FlameGraph.zip

使用FlameGraph

cd FlameGraph

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

./flamegraph.pl a1.cbt > a1.svg

其中 stackcollapse-stap.pl 和 flamemgraph.pl 都来自 flametgraph 工具箱。 如果一切顺利,你现在可以使用你的浏览器打开 a.svg 文件。

2.分析lua代码问题

下载stapxx

https://github.com/openresty/stapxx/archive/master.zip

解压stapxx

mv master.zip stapxx-master.zip
unzip stapxx-master.zip

使用stapxx

cd stapxx-master

对pid为19697的进程进行总共60秒的采样

./samples/lj-lua-stacks.sxx -I ./tapset --arg time=60 --skip-badvars -x 19697 > c.bt

最终的输出文件同样可以残康上面的步骤生成svg图像在浏览器打开。


更多具体内容参考一下网站:

https://openresty.org/en/profiling.html
https://openresty.org/en/build-systemtap.html
https://github.com/brendangregg/FlameGraph
https://github.com/openresty/stapxx#lj-lua-stacks

kernel-devel 安装

第一步导入openresty.repo

yum install yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

第二步安装对应的kernel-devel,例如kernel-devel-2.6.32-573.18.1.el6.x86_64

yum install kernel-devel-2.6.32-573.18.1.el6.x86_64

本文链接:https://www.tech-field.org/openresty-profiling.html

fc