OpenResty 从入门到实战
温铭
OpenResty 软件基金会第一任主席,Apache APISIX 项目 VP
20903 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 52 讲
结束语 (1讲)
OpenResty 从入门到实战
15
15
1.0x
00:00/00:00
登录|注册

37 | systemtap-toolkit和stapxx:如何用数据搞定“疑难杂症”?

示例代码
生成火焰图的步骤
stapxx 中的 lj-lua-stacks
systemtap-toolkit 中的 sample-bt
实现原理
追踪字典写操作
获取数据命令行示例
文件访问
连接池
内存池
请求延迟
垃圾回收
共享字典
off CPU
on CPU
交流和分享
外部动态跟踪的技术
OpenResty 提供的更多工具
保持代码基的简洁和稳定
开源项目的使用注意事项
OpenResty 最新版本的兼容性问题
上游和阶段跟踪工具 ngx-single-req-latency
分析延迟的工具 epoll-loop-blocking-distr
on CPU 和 off CPU 火焰图
共享字典分析工具 ngx-lua-shdict
功能和调试场景覆盖
stapxx
openresty-systemtap-toolkit
目的:帮助在遇到 Nginx 和 OpenResty 的疑难杂症时,可以快速找到定位问题的工具
主题:使用开源工具进行 Nginx 和 OpenResty 的实时分析和诊断
作者:温铭
标题:systemtap-toolkit和stapxx:如何用数据搞定“疑难杂症”?
总结
注意事项
工具示例
工具集介绍
参考文章
知识关系脑图

该思维导图由 AI 生成,仅供参考

你好,我是温铭。
正如上节课介绍过的,作为服务端开发工程师,我们并不会对动态调试的工具集做深入的学习,大都是停留在使用的这个层面上,最多去编写一些简单的 stap 脚本。更底层的,比如 CPU 缓存、体系结构、编译器等,那就是性能工程师的领域了。
在 OpenResty 中有两个开源项目:openresty-systemtap-toolkitstapxx 。它们是基于 Systemtap 封装好的工具集,用于 Nginx 和 OpenResty 的实时分析和诊断。它们可以覆盖 on CPU、off CPU、共享字典、垃圾回收、请求延迟、内存池、连接池、文件访问等常用的功能和调试场景。
在今天这节课中,我会带你浏览下这些工具和对应的使用方法,目的是帮你在遇到 Nginx 和 OpenResty 的疑难杂症时,可以快速找到定位问题的工具。在 OpenResty 的世界中,学会使用这些工具是你进阶的必经之路,也是和其他开发者沟通的非常有效的方式——毕竟,工具产生的数据,会比你用文字描述更加准确和详尽。
不过,需要特别注意的是,OpenResty 的最新版本 1.15.8 默认开启了 LuaJIT GC64 模式,但是 openresty-systemtap-toolkitstapxx 并没有跟着做对应的修改,这就会导致里面的工具都无法正常使用。所以,你最好在 OpenResty 旧的 1.13 版本中来使用这些工具。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了OpenResty中两个基于Systemtap封装的开源项目:`openresty-systemtap-toolkit`和`stapxx`,并详细阐述了它们在Nginx和OpenResty的实时分析和诊断中的重要性。文章首先介绍了`ngx-lua-shdict`工具,用于分析Nginx的共享内存字典,并展示了其使用方法和实现原理。接着详细介绍了如何使用`sample-bt`和`sample-bt-off-cpu`来生成C级别和Lua级别的on CPU和off CPU火焰图,以及使用`epoll-loop-blocking-distr`分析延迟。此外,还介绍了`ngx-single-req-latency`工具,用于跟踪单个请求在OpenResty中各个阶段的耗时。文章强调了这些工具在解决Nginx和OpenResty的疑难杂症时的重要性,以及在使用开源项目时需要注意的一些问题。整体而言,本文为读者提供了一些高级技术工具的使用方法和原理,有助于他们在实际工作中快速定位和解决问题。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《OpenResty 从入门到实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • manatee
    老师想请问下如果升级了最新的1.15.8版本,如何使用火焰图呢

    作者回复: 编译的时候,把LuaJIT 的 64 位支持去掉

    2019-08-21
    2
    1
  • HelloBug
    老师,对工作进程进行采样的时候,是否会对工作进程的性能产生可见的影响?

    作者回复: 性能影响大概在 5% 以内。但是使用 systemtap 可能会对系统造成其他影响,我们之前遇到过采样脚本影响网络的事情。所以在生产环境采样还是要谨慎。

    2019-09-03
  • helloworld
    local require = require -- 老师, 代码文件开始需要加这条吗,我看有人这么干的。

    作者回复: 如果你用了 luacheck 等代码风格的检测工具,是要这么做的,避免全局变量。

    2019-08-19
  • 罐头瓶子
    这个可以做一些更加深入的一些介绍么?

    作者回复: 篇幅有限,这种优化工具需要合适的场景才更有代入感:) 你看下后面视频课里面的示例是否详细一些?

    2019-08-19
    2
  • tenglonsen
    温老师,我现在有用openresty作为mysql的中间件来用,然而我们数据库中的数据存在很多大字段,业务方会通过http接口拉取大量数据,这样nginx的worker进程跑着跑着内存就到3G+去了,通过火焰图看出大部分CPU时间是在mysql.lua文件中,目前找了很久,没有好的思路去定位这个内存问题,只能每天定时重启一下。。。请问一下这个问题有什么好的定位方法没,或者说是不是openresty不适合这种大量数据的使用场景呢?
    2019-10-28
    2
  • Geek_584aa7
    除了这两款工具结合使用排查性能问题,还有其他开源工具吗?如果系统不是基于openresty但是也是基于ngnix+lua实现的,也能用您说的这两款工具结合排查性能问题吗?
    2021-09-29
    1
  • 贺钧威
    openresty xray 会不会比这些工具更好用?https://openresty.com/en/xray/
    2020-03-22
    1
  • 许童童
    老师来点图片,一图胜千言啊。
    2019-08-19
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部