1、环境:
yum -y install elfutils-devel gettext glibc-devel
wget https://sourceware.org/systemtap/ftp/releases/systemtap-3.3.tar.gz
tar zxvf systemtap-3.3.tar.gz
cd systemtap-3.3
./configure; make; make install
执行stap -ve 'probe begin { log("hello systemtap!") exit() }'
如果提示:Checking "/lib/modules/2.6.32-431.el6.x86_64/build/.config" failed with error: No such file or directory
下载相应的内核版本 kernel-devel-2.6.32-431.el6.x86_64.rpm
rpm -ivh kernel-devel-2.6.32-431.el6.x86_64.rpm
ln -f -s /usr/src/kernels/2.6.32-431.el6.x86_64/ /lib/modules/2.6.32-431.el6.x86_64/build
如果提示:Pass 5: run completed in 0usr/10sys/300real ms.表示成功
wget http://debuginfo.centos.org/6/x86_64/kernel-debuginfo-common-x86_64-2.6.32-431.el6.x86_64.rpm
rpm -ivh kernel-debuginfo-common-x86_64-2.6.32-431.el6.x86_64.rpm
wget http://debuginfo.centos.org/6/x86_64/kernel-debuginfo-2.6.32-431.el6.x86_64.rpm
rpm -ivh kernel-debuginfo-2.6.32-431.el6.x86_64.rpm
2、下载:
http://xbsura.com/2016/10/12/openresty%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E5%B0%8F%E7%BB%93/
下载最新的openresty调试工具,然后解压到/opt即可。
wget https://github.com/brendangregg/openresty-systemtap-toolkit/archive/master.zip --no-check-certificate
下载最新的FlameGraph,然后解压到/opt即可。
wget https://github.com/brendangregg/FlameGraph/archive/master.zip --no-check-certificate
ps -ef|grep nginx
3、测试:
cd 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