Hi!
> Lua代码遇到了性能瓶颈,想烧火焰图看一眼,但我的openresty放在docker里,docker又没有内核,所以有什么办法可以生成docker里nginx的火焰图么?
没有试过这样的用法,在 docker 里安装好 systemtap,然后在容器启动的时候把 /lib/modules 目录映射进去试试?
> Lua调用栈抓取有问题
> 抓取的时候,会提示
> ERROR: read fault [man error::fault] at 0x0000000000755fc8 (addr) near operator '@var' at stapxx-uu62najx/nginx.lua.stp:9:43
> 如果加上-skip-badvars后,这个错误就会消失掉,但抓不到任何东西
> WARNING: Found 0 JITted samples.
这个问题我以前也遇到过,不过当时我是交叉编译的,编译时指向的 nginx 二进制和运行时指向的不一样。
lua.stp:9:43 里面有读取两个结构体数据(ngx_cycle 和 ngx_http_lua_module),
这个报错应该是在读其中一个结构体的时候报错的,
用 objdump 看下其地址是不是正确的(0x0000000000755fc8)?
> 抓C级别的调用栈时,只有地址没有函数名
确保你的二进制编译的时候有添加 -g 选项。