编程人生—杂记程序员

安装systemtap生成openresty的火焰图

2017-05-08  本文已影响77人  ytlm

SystemTap

简单介绍

systemtap工具功能很强大,目前刚接触,在此仅仅通过官网做一些简单的介绍。

安装

表示在这里被坑了好久,全部安装好后运行的时候一直报错,累。。。

Openresty

介绍

  • 目前应该直接集成LuaJIT了,简单来说LuaJIT是lua的一个更高性能的版本。

安装

目前在做nginx的相关工作,所以对openresty了解的比较多一点,如有兴趣,欢迎共同交流。

火焰图

介绍

对于火焰图也是最近才了解到的,有些解释可能很牵强,误怪,后面会慢慢的了解学习的。

生成

在采样信息的时候需要让nginx在压力很大的情况下,这样得出的结果才会有更大的参考性。

分析火焰图

  1. sudo ./sample-bt -p 15507 -t 60 -u -a '-DMAXACTION=100000' > /tmp/nginx.bt

-p 表示nginx的worker的pid
-t 表示采样时间
-u 表示在用户空间
-a 传递一些参数,因为我自己的机器的原因所以需要传递这个参数,要不然会报错的

  1. sudo ./stackcollapse-stap.pl /tmp/nginx.bt > /tmp/nginx.cbt
  2. sudo ./flamegraph.pl /tmp/nginx.cbt > /tmp/nginx.svg
  3. 用浏览器打开/tmp/nginx.svg
openresty C层面的火焰图openresty C层面的火焰图

我用wrk给nginx的压力还不是很大大概CPU才20%左右,所以这个不是很准确的;但是也可以看出一些问题,比如看出在发送数据的时候还是有问题的,都在body_filter阶段,可能因为我用了很多的buffer的原因

  1. sudo ./ngx-sample-lua-bt -a '-DMAXACTION=100000' -p 4790 --luajit20 -t 60 > /tmp/lua.bt

各个参数的意思和上面的一样。

  1. sudo ./fix-lua-bt /tmp/lua.bt > /tmp/lua-fix.bt
  2. sudo ./stackcollapse-stap.pl /tmp/lua-fix.bt > /tmp/lua-fix.cbt
  3. sudo ./flamegraph.pl /tmp/lua-fix.cbt > /tmp/lua-fix.svg
  4. 浏览器打开/tmp/lua-fix.svg
    图的话在这里就不再贴出来了

后记


*** 如有疑问欢迎批评指正,谢谢! ***

上一篇 下一篇

猜你喜欢

热点阅读