← Back
dynamic-tracing

使用 C++ 动态追踪 C++ 应用

  • 设置目标 C++ 程序
  • 编写 C++(或 Y++)分析器
  • 将目标和分析器投入运行
  • 支持复杂 C++ 应用的进展
  • 关于调试符号
  • 结论
Photo by 章亦春
  • 设置目标 C++ 程序
  • 编写 C++(或 Y++)分析器
  • 将目标和分析器投入运行
  • 支持复杂 C++ 应用的进展
  • 关于调试符号
  • 结论

自动分析 Core Dump(使用 OpenResty XRay)

  • 查看 core dump 文件
  • 使用 OpenResty XRay 的引导式分析功能分析 core dump 文件
  • 全自动分析与报告
  • 查看 core dump 文件
  • 使用 OpenResty XRay 的引导式分析功能分析 core dump 文件
  • 全自动分析与报告

Ylang:适用于 eBPF、Stap+、GDB 等框架的通用语言(第四集,全四集)

  • 透明的跨容器追踪
    • 高效的栈展开
    • 分析已终止进程(core dumps)
    • 极低的追踪开销
    • 标准 Y 语言库和工具
    • 网络过滤和控制
    • Y 语言编译器的实现
    • 操作系统支持
    • 对开源社区的贡献
    • 结论
    • 致谢
Photo by 章亦春
  • 透明的跨容器追踪
    • 高效的栈展开
    • 分析已终止进程(core dumps)
    • 极低的追踪开销
    • 标准 Y 语言库和工具
    • 网络过滤和控制
    • Y 语言编译器的实现
    • 操作系统支持
    • 对开源社区的贡献
    • 结论
    • 致谢

Ylang: 适用于 eBPF、Stap+、GDB 等框架的通用语言(第三集,全四集)

  • Y 语言的语法(接上文)
    • 字符串
    • 内置的正则表达式支持
    • 完整控制流支持
    • 浮点数支持
    • 与开源工具链的比较
  • 清晰的调试符号方式
    • 调试符号:无运行期系统开销
    • 集中的软件包数据库
    • 模糊匹配调试符号
Photo by 章亦春
  • Y 语言的语法(接上文)
    • 字符串
    • 内置的正则表达式支持
    • 完整控制流支持
    • 浮点数支持
    • 与开源工具链的比较
  • 清晰的调试符号方式
    • 调试符号:无运行期系统开销
    • 集中的软件包数据库
    • 模糊匹配调试符号

Ylang:适用于 eBPF、Stap+、GDB 等框架的通用语言(第二集,全四集)

  • 语言语法(接上文)
    • 宏拓展
    • 追踪者与被追踪者空间
    • 探针
    • 拓展变量类型
Photo by Yichun Zhang
  • 语言语法(接上文)
    • 宏拓展
    • 追踪者与被追踪者空间
    • 探针
    • 拓展变量类型

捕捉 Linux 内核追踪子系统中的两个 bug(使用 OpenResty XRay)

  • 读取用户空间内存时的内核死锁
  • 内核中 x86 断点插入的数据竞争
  • 读取用户空间内存时的内核死锁
  • 内核中 x86 断点插入的数据竞争

Ylang: 适用于 eBPF、Stap+、GDB 等框架的通用语言(第一集,全四集)

  • 什么是动态追踪
  • 为什么命名为 “Y”
  • 入门
  • 各种后端和运行时
  • 为什么要使用一个统一的前端语言
  • 语言的语法
  • 未完待续
Photo by 章亦春
  • 什么是动态追踪
  • 为什么命名为 “Y”
  • 入门
  • 各种后端和运行时
  • 为什么要使用一个统一的前端语言
  • 语言的语法
  • 未完待续

QCon 北京 2023 大会上关于深度分析和诊断 K8s 容器应用的演讲

本周我受邀在 QCon 北京 2023 大会上作了一次远程分享。
Photo by Yichun Zhang
本周我受邀在 QCon 北京 2023 大会上作了一次远程分享。

OpenResty XRay 分析和解决 B 站重大线上事故

  • 事故描述
  • 事故分析过程
  • 事故后续修复和加固
  • OpenResty XRay 产品和服务
Photo by OpenResty Inc.
  • 事故描述
  • 事故分析过程
  • 事故后续修复和加固
  • OpenResty XRay 产品和服务

内存减少 60%,OpenResty XRay 精准定位问题代码,快速完成修复上线

  • worker 进程内存占用高
  • 分析过程
  • worker 进程内存不释放的疑问
  • worker 进程内存占用高
  • 分析过程
  • worker 进程内存不释放的疑问

Lua 级别 CPU 火焰图简介

  • 什么是火焰图
  • 简单的 Lua 样例
  • 复杂的 Lua 应用
  • 采样开销
  • 安全性
  • 兼容性
  • 其他类型的 Lua 级别火焰图
Photo by Guido Jansen
  • 什么是火焰图
  • 简单的 Lua 样例
  • 复杂的 Lua 应用
  • 采样开销
  • 安全性
  • 兼容性
  • 其他类型的 Lua 级别火焰图

OpenResty 与 Nginx 共享内存区的内存碎片问题

  • 空的共享内存区
  • 填充类似大小的条目
  • 删除奇数键
  • 删除前半部分的键
  • 缓解内存碎片
Photo by Elena Mozhvilo
  • 空的共享内存区
  • 填充类似大小的条目
  • 删除奇数键
  • 删除前半部分的键
  • 缓解内存碎片

OpenResty 和 Nginx 的共享内存区是如何消耗物理内存的

  • Slab 与内存页
  • 分配的内存不一定有消耗
  • 虚假的内存泄漏
  • HUP 重新加载
Photo by Jose G. Ortega Castro
  • Slab 与内存页
  • 分配的内存不一定有消耗
  • 虚假的内存泄漏
  • HUP 重新加载

OpenResty 和 Nginx 如何分配和管理内存

  • 系统层面
  • 应用层面
  • 传统的 Nginx 服务器
Photo by Harrison Broadbent
  • 系统层面
  • 应用层面
  • 传统的 Nginx 服务器

LuaJIT GC64 模式

  • 老的内存限制
    • 何时会碰到这个内存限制
    • 内存限制是每进程的
    • GC 管理的内存
    • 不由 GC 管理的内存
    • 提升 x64 模式的内存上限到 4 GB
  • 新的 GC64 模式
    • 如何开启 GC64 模式
    • 性能影响
    • 调试分析工具链
  • 老的内存限制
    • 何时会碰到这个内存限制
    • 内存限制是每进程的
    • GC 管理的内存
    • 不由 GC 管理的内存
    • 提升 x64 模式的内存上限到 4 GB
  • 新的 GC64 模式
    • 如何开启 GC64 模式
    • 性能影响
    • 调试分析工具链

动态追踪技术漫谈

  • 什么是动态追踪
  • 动态追踪的优点
  • DTrace 与 SystemTap
  • SystemTap 在生产上的应用
  • 火焰图
  • 方法论
  • 知识就是力量
  • 开源与调试符号
  • Linux 内核的支持
  • 硬件追踪
  • 死亡进程的遗骸分析
  • 传统的调试技术
  • 凌乱的调试世界
  • OpenResty XRay
Photo by Philip Brown
  • 什么是动态追踪
  • 动态追踪的优点
  • DTrace 与 SystemTap
  • SystemTap 在生产上的应用
  • 火焰图
  • 方法论
  • 知识就是力量
  • 开源与调试符号
  • Linux 内核的支持
  • 硬件追踪
  • 死亡进程的遗骸分析
  • 传统的调试技术
  • 凌乱的调试世界
  • OpenResty XRay
联系我们

很乐意听到您的反馈,请与我们联系 👋

成功发送消息!

我们的专家团队将在 24 小时之内与您联系。
x