nginx systemtap 调试记录

0X01 准备系统相关包

参考发行版Linux为 Centos relase 6.4(Final) ,系统版本为:2.6.32-358.el6.x86_64。

安装包如下所示,如果有安装冲突,rpm -e 删除原来的rpm包,即可安装

kernel-2.6.32-358.el6.x86_64.rpm

kernel-debug-2.6.32-358.el6.x86_64.rpm

kernel-debug-debuginfo-2.6.32-358.el6.x86_64.rpm

kernel-debug-devel-2.6.32-358.el6.x86_64.rpm

kernel-debuginfo-2.6.32-358.el6.x86_64.rpm

kernel-debuginfo-common-x86_64-2.6.32-358.el6.x86_64.rpm

kernel-devel-2.6.32-358.el6.x86_64.rpm

kernel-headers-2.6.32-358.el6.x86_64.rpm

perf-2.6.32-358.el6.x86_64.rpm

perf-debuginfo-2.6.32-358.el6.x86_64.rpm

python-perf-2.6.32-358.el6.x86_64.rpm

python-perf-debuginfo-2.6.32-358.el6.x86_64.rpm

 

0X02 安装其它相关包

yum install systemtap //安装systemtap

测试:sudo stap -ve 'probe begin { log("hello Systemtap!") exit() }'

成功之后的截图

接下来安装nginx 相关的包

为了节省时间,直接使用了openresty作为实际的nginx进行测试:nginx version: openresty/1.7.10.1

https://github.com/brendangregg/FlameGraph  //把相关的数据转换成火焰图

https://github.com/openresty/nginx-systemtap-toolkit //systemtap使用的相关脚本

 

0X03 测试

命令sudo ./nginx-systemtap-toolkit/sample-bt -p 14345-u -t 20 > trace.txt

其中-p 指定进程的pid
             -u  追踪用户态的调用堆栈(也可以使用-k追踪程序运行期间在内核态的堆栈)
             -t   脚本的运行时间,达到时间之后脚本自动停止,将堆栈信息输出,单位为秒
启动后会有类似的信息:
     WARNING: Tracing 1147 (/home/kawaru/nginx/sbin/nginx) in user-space only...
     提示已经开始跟踪,这是可以用ab等等东西打点流量,等20秒之后会显示:
     WARNING: Time's up. Quitting now...(it may take a while)

     这时候有可能需要多等一会,成功完成后会在trace.txt里看到类似如下图的内容,即是跟踪的数据
接下来使用FlameGraph 转换为图片的格式
使用浏览器查看火焰图
再然后,根据实际的情况 进行优化吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值