精选文章
最新文章
不改代码、不重启服务:OpenResty XRay 如何对生产环境做全栈动态追踪
- 现有动态追踪框架的技术权衡与生产环境局限性
- OpenResty XRay 的动态追踪架构级突破
- 全栈火焰图
- 能力边界的持续扩展

- 现有动态追踪框架的技术权衡与生产环境局限性
- OpenResty XRay 的动态追踪架构级突破
- 全栈火焰图
- 能力边界的持续扩展
OpenResty XRay 是什么
- 以“零侵入”重构生产环境性能分析
- 将海量遥测数据转化为可执行的洞察
- 适应弹性架构的无感观测能力
- 赋能高可用架构的长期主义

- 以“零侵入”重构生产环境性能分析
- 将海量遥测数据转化为可执行的洞察
- 适应弹性架构的无感观测能力
- 赋能高可用架构的长期主义
一次无法重启的 Nginx 内存泄漏,我们是如何在生产环境把它抓出来的
- 一次生产环境内存泄漏的完整解剖
- 为什么这类问题几乎无解?
- 从“靠运气”到“可预测”
- 当性能问题超越“工具”范畴”

- 一次生产环境内存泄漏的完整解剖
- 为什么这类问题几乎无解?
- 从“靠运气”到“可预测”
- 当性能问题超越“工具”范畴”
从 9万 QPS 到 6千:一次压测暴露的 15 倍性能黑洞,我们如何用 OpenResty XRay 定位根因
- 93% 损耗背后的观测盲区
- OpenResty XRay 揭示连接复用问题
- 对比分析发现编译选项问题
- 编译器选项对指令执行效率的影响
- 15 倍 QPS 差异的工程性复盘

- 93% 损耗背后的观测盲区
- OpenResty XRay 揭示连接复用问题
- 对比分析发现编译选项问题
- 编译器选项对指令执行效率的影响
- 15 倍 QPS 差异的工程性复盘
从被动囤积到主动治理:如何破解 LuaJIT“伪内存泄漏”
- 定义“伪内存泄漏”:当 GC 数据与 RSS 脱钩
- 使用 lj-resty-memory 量化内存空洞
- 通过 LuaJIT-plus 实现主动内存归还
- 核心洞察与工程实践建议

- 定义“伪内存泄漏”:当 GC 数据与 RSS 脱钩
- 使用 lj-resty-memory 量化内存空洞
- 通过 LuaJIT-plus 实现主动内存归还
- 核心洞察与工程实践建议
我们如何在一个 500k QPS 的 OpenResty 网关中定位 244 毫秒的性能异常
- 当“地震仪”找不到震源
- 从经验主义到动态观测的价值转化
- 可量化的工程效率与资源优化指标
- 构建持续性能观测能力

- 当“地震仪”找不到震源
- 从经验主义到动态观测的价值转化
- 可量化的工程效率与资源优化指标
- 构建持续性能观测能力
从堆内存异常到精准定位:OpenResty XRay 在 Java 内存问题诊断中的实践
- 背景与问题
- 系统化的诊断路径:从泄漏到抖动
- 诊断效率与系统增益
- 为什么选择 OpenResty XRay?
- 总结与思考

- 背景与问题
- 系统化的诊断路径:从泄漏到抖动
- 诊断效率与系统增益
- 为什么选择 OpenResty XRay?
- 总结与思考
当“黑盒”插件吃掉 45% CPU,我们如何在无源码情况下定位到 Lua 第 93 行
- 当 perf 遇到“黑盒”
- 从采样到全栈动态追踪
- 拿到证据链
- 从“发生了什么”到“为什么”

- 当 perf 遇到“黑盒”
- 从采样到全栈动态追踪
- 拿到证据链
- 从“发生了什么”到“为什么”
OpenResty XRay 如何精准定位 Gzip 配置的隐性成本
- 性能问题往往在不起眼的地方
- OpenResty XRay 如何定义性能瓶颈的“根因”
- 性能瓶颈的可量化真相
- 从经验到方法论

- 性能问题往往在不起眼的地方
- OpenResty XRay 如何定义性能瓶颈的“根因”
- 性能瓶颈的可量化真相
- 从经验到方法论
如何使用 OpenResty XRay 快速定位 C++ 进程的内存泄漏
- 技术困境与初步诊断
- 火焰图指路,锁定内存泄漏的“重灾区”
- 从被动应对到主动赋能:XRay 带来的排障新闭环
- 总结

- 技术困境与初步诊断
- 火焰图指路,锁定内存泄漏的“重灾区”
- 从被动应对到主动赋能:XRay 带来的排障新闭环
- 总结
OpenResty XRay Java 函数探针:无侵入式函数监控实践
- 什么是无侵入式函数探针?
- OpenResty XRay 的无侵入式探针,有哪些特别之处?
- 实战演示:监控函数参数
- 技术优势与应用场景

- 什么是无侵入式函数探针?
- OpenResty XRay 的无侵入式探针,有哪些特别之处?
- 实战演示:监控函数参数
- 技术优势与应用场景
别让“大数据”淹没你:OpenResty XRay 如何用最少数据,定位最棘手问题
- “更多数据”不等于“更多洞察”
- OpenResty XRay 有何不同?
- XRay 在真实场景中的应用案例

- “更多数据”不等于“更多洞察”
- OpenResty XRay 有何不同?
- XRay 在真实场景中的应用案例
金融服务内存飙升:OpenResty XRay 通过一张火焰图,让占用降至 40%
- 精准定位内存泄漏根因
- 显著的优化成效
- 延展阅读
- 总结

- 精准定位内存泄漏根因
- 显著的优化成效
- 延展阅读
- 总结
OpenResty XRay 如何用 Node.js 函数探针实现监控新范式
- 为什么你需要无侵入式函数探针的新范式?
- 实战演示:监控函数参数
- 顶尖团队如何利用无侵入式探针提升研发效能?
- 总结

- 为什么你需要无侵入式函数探针的新范式?
- 实战演示:监控函数参数
- 顶尖团队如何利用无侵入式探针提升研发效能?
- 总结
应用卡顿?OpenResty XRay 一键揭秘 75 毫秒阻塞背后的真相
- 性能“疑云”:CPU 资源争用浮出水面
- 真凶现形:阻塞的 Lua IO 操作
- 全面评估事件循环的阻塞程度
- 使用 OpenResty XRay 告别 Nginx 性能噩梦

- 性能“疑云”:CPU 资源争用浮出水面
- 真凶现形:阻塞的 Lua IO 操作
- 全面评估事件循环的阻塞程度
- 使用 OpenResty XRay 告别 Nginx 性能噩梦
双重瓶颈并发?OpenResty XRay 多维分析破解性能难题
- 整体 CPU 使用分析
- 深入模块内部分析
- 压缩策略深度分析
- 分析结论
- 优化解决方案

- 整体 CPU 使用分析
- 深入模块内部分析
- 压缩策略深度分析
- 分析结论
- 优化解决方案
分析线上 Node.js 应用的 CPU 使用情况(使用 OpenResty XRay)
- Node.js 应用中的高 CPU 使用率问题
- Node.js 应用中的 CPU 阻塞问题
- 支持的 Node.js 版本和操作系统
- 性能影响和额外负担
- 下一步的计划

- Node.js 应用中的高 CPU 使用率问题
- Node.js 应用中的 CPU 阻塞问题
- 支持的 Node.js 版本和操作系统
- 性能影响和额外负担
- 下一步的计划
从崩溃到根因:OpenResty XRay 如何将 Nginx 内存踩踏问题分析得明明白白
- 一个让运维团队彻夜难眠的 Nginx 崩溃案例
- 如何用 OpenResty XRay 精准捕获内存踩踏的“第一现场”
- 二次开发如何意外破坏了 Nginx 的生命周期管理

- 一个让运维团队彻夜难眠的 Nginx 崩溃案例
- 如何用 OpenResty XRay 精准捕获内存踩踏的“第一现场”
- 二次开发如何意外破坏了 Nginx 的生命周期管理
不改代码、不重启服务:OpenResty XRay 如何对生产环境做全栈动态追踪
- 现有动态追踪框架的技术权衡与生产环境局限性
- OpenResty XRay 的动态追踪架构级突破
- 全栈火焰图
- 能力边界的持续扩展

- 现有动态追踪框架的技术权衡与生产环境局限性
- OpenResty XRay 的动态追踪架构级突破
- 全栈火焰图
- 能力边界的持续扩展
OpenResty XRay 是什么
- 以“零侵入”重构生产环境性能分析
- 将海量遥测数据转化为可执行的洞察
- 适应弹性架构的无感观测能力
- 赋能高可用架构的长期主义

- 以“零侵入”重构生产环境性能分析
- 将海量遥测数据转化为可执行的洞察
- 适应弹性架构的无感观测能力
- 赋能高可用架构的长期主义
一次无法重启的 Nginx 内存泄漏,我们是如何在生产环境把它抓出来的
- 一次生产环境内存泄漏的完整解剖
- 为什么这类问题几乎无解?
- 从“靠运气”到“可预测”
- 当性能问题超越“工具”范畴”

- 一次生产环境内存泄漏的完整解剖
- 为什么这类问题几乎无解?
- 从“靠运气”到“可预测”
- 当性能问题超越“工具”范畴”
从 9万 QPS 到 6千:一次压测暴露的 15 倍性能黑洞,我们如何用 OpenResty XRay 定位根因
- 93% 损耗背后的观测盲区
- OpenResty XRay 揭示连接复用问题
- 对比分析发现编译选项问题
- 编译器选项对指令执行效率的影响
- 15 倍 QPS 差异的工程性复盘

- 93% 损耗背后的观测盲区
- OpenResty XRay 揭示连接复用问题
- 对比分析发现编译选项问题
- 编译器选项对指令执行效率的影响
- 15 倍 QPS 差异的工程性复盘
从被动囤积到主动治理:如何破解 LuaJIT“伪内存泄漏”
- 定义“伪内存泄漏”:当 GC 数据与 RSS 脱钩
- 使用 lj-resty-memory 量化内存空洞
- 通过 LuaJIT-plus 实现主动内存归还
- 核心洞察与工程实践建议

- 定义“伪内存泄漏”:当 GC 数据与 RSS 脱钩
- 使用 lj-resty-memory 量化内存空洞
- 通过 LuaJIT-plus 实现主动内存归还
- 核心洞察与工程实践建议
我们如何在一个 500k QPS 的 OpenResty 网关中定位 244 毫秒的性能异常
- 当“地震仪”找不到震源
- 从经验主义到动态观测的价值转化
- 可量化的工程效率与资源优化指标
- 构建持续性能观测能力

- 当“地震仪”找不到震源
- 从经验主义到动态观测的价值转化
- 可量化的工程效率与资源优化指标
- 构建持续性能观测能力
从堆内存异常到精准定位:OpenResty XRay 在 Java 内存问题诊断中的实践
- 背景与问题
- 系统化的诊断路径:从泄漏到抖动
- 诊断效率与系统增益
- 为什么选择 OpenResty XRay?
- 总结与思考

- 背景与问题
- 系统化的诊断路径:从泄漏到抖动
- 诊断效率与系统增益
- 为什么选择 OpenResty XRay?
- 总结与思考
当“黑盒”插件吃掉 45% CPU,我们如何在无源码情况下定位到 Lua 第 93 行
- 当 perf 遇到“黑盒”
- 从采样到全栈动态追踪
- 拿到证据链
- 从“发生了什么”到“为什么”

- 当 perf 遇到“黑盒”
- 从采样到全栈动态追踪
- 拿到证据链
- 从“发生了什么”到“为什么”
OpenResty XRay 如何精准定位 Gzip 配置的隐性成本
- 性能问题往往在不起眼的地方
- OpenResty XRay 如何定义性能瓶颈的“根因”
- 性能瓶颈的可量化真相
- 从经验到方法论

- 性能问题往往在不起眼的地方
- OpenResty XRay 如何定义性能瓶颈的“根因”
- 性能瓶颈的可量化真相
- 从经验到方法论
如何使用 OpenResty XRay 快速定位 C++ 进程的内存泄漏
- 技术困境与初步诊断
- 火焰图指路,锁定内存泄漏的“重灾区”
- 从被动应对到主动赋能:XRay 带来的排障新闭环
- 总结

- 技术困境与初步诊断
- 火焰图指路,锁定内存泄漏的“重灾区”
- 从被动应对到主动赋能:XRay 带来的排障新闭环
- 总结
别让“大数据”淹没你:OpenResty XRay 如何用最少数据,定位最棘手问题
- “更多数据”不等于“更多洞察”
- OpenResty XRay 有何不同?
- XRay 在真实场景中的应用案例

- “更多数据”不等于“更多洞察”
- OpenResty XRay 有何不同?
- XRay 在真实场景中的应用案例
金融服务内存飙升:OpenResty XRay 通过一张火焰图,让占用降至 40%
- 精准定位内存泄漏根因
- 显著的优化成效
- 延展阅读
- 总结

- 精准定位内存泄漏根因
- 显著的优化成效
- 延展阅读
- 总结
OpenResty XRay 如何用 Node.js 函数探针实现监控新范式
- 为什么你需要无侵入式函数探针的新范式?
- 实战演示:监控函数参数
- 顶尖团队如何利用无侵入式探针提升研发效能?
- 总结

- 为什么你需要无侵入式函数探针的新范式?
- 实战演示:监控函数参数
- 顶尖团队如何利用无侵入式探针提升研发效能?
- 总结
应用卡顿?OpenResty XRay 一键揭秘 75 毫秒阻塞背后的真相
- 性能“疑云”:CPU 资源争用浮出水面
- 真凶现形:阻塞的 Lua IO 操作
- 全面评估事件循环的阻塞程度
- 使用 OpenResty XRay 告别 Nginx 性能噩梦

- 性能“疑云”:CPU 资源争用浮出水面
- 真凶现形:阻塞的 Lua IO 操作
- 全面评估事件循环的阻塞程度
- 使用 OpenResty XRay 告别 Nginx 性能噩梦
双重瓶颈并发?OpenResty XRay 多维分析破解性能难题
- 整体 CPU 使用分析
- 深入模块内部分析
- 压缩策略深度分析
- 分析结论
- 优化解决方案

- 整体 CPU 使用分析
- 深入模块内部分析
- 压缩策略深度分析
- 分析结论
- 优化解决方案
分析线上 Node.js 应用的 CPU 使用情况(使用 OpenResty XRay)
- Node.js 应用中的高 CPU 使用率问题
- Node.js 应用中的 CPU 阻塞问题
- 支持的 Node.js 版本和操作系统
- 性能影响和额外负担
- 下一步的计划

- Node.js 应用中的高 CPU 使用率问题
- Node.js 应用中的 CPU 阻塞问题
- 支持的 Node.js 版本和操作系统
- 性能影响和额外负担
- 下一步的计划
从崩溃到根因:OpenResty XRay 如何将 Nginx 内存踩踏问题分析得明明白白
- 一个让运维团队彻夜难眠的 Nginx 崩溃案例
- 如何用 OpenResty XRay 精准捕获内存踩踏的“第一现场”
- 二次开发如何意外破坏了 Nginx 的生命周期管理

- 一个让运维团队彻夜难眠的 Nginx 崩溃案例
- 如何用 OpenResty XRay 精准捕获内存踩踏的“第一现场”
- 二次开发如何意外破坏了 Nginx 的生命周期管理
UDB + OpenResty XRay:解锁 OpenResty 应用性能之谜
- OpenResty XRay 如何协同 UDB 增效
- 实战:使用 UDB 与 OpenResty XRay 分析 OpenResty 应用的 Lua 代码调用栈
- 时间旅行调试的优势

- OpenResty XRay 如何协同 UDB 增效
- 实战:使用 UDB 与 OpenResty XRay 分析 OpenResty 应用的 Lua 代码调用栈
- 时间旅行调试的优势
UDB 与 OpenResty XRay 如何让你看透 Perl 代码执行全过程
- UDB 是什么?
- 实战:使用 OpenResty XRay 与 UDB 分析 Perl 应用的代码调用栈
- 为什么越来越多开发者选择 UDB?

- UDB 是什么?
- 实战:使用 OpenResty XRay 与 UDB 分析 Perl 应用的代码调用栈
- 为什么越来越多开发者选择 UDB?
UDB 与 OpenResty XRay:如何分析 Java 应用中的文件操作
- UDB 是什么?
- 强强联手:UDB 遇上 OpenResty XRay
- 实战演练:使用 OpenResty XRay 与 UDB 分析 Java 应用的文件操作调用栈
- 时间旅行调试的优势

- UDB 是什么?
- 强强联手:UDB 遇上 OpenResty XRay
- 实战演练:使用 OpenResty XRay 与 UDB 分析 Java 应用的文件操作调用栈
- 时间旅行调试的优势
结合 UDB 的时间旅行功能,揭秘 Python 代码执行过程
- UDB 在 Python 调试中的独特价值
- 结合 OpenResty XRay 增强调试能力
- 实战案例:分析 Python 网络请求的调用栈
- 总结

- UDB 在 Python 调试中的独特价值
- 结合 OpenResty XRay 增强调试能力
- 实战案例:分析 Python 网络请求的调用栈
- 总结
技术案例:如何使用 OpenResty XRay 追踪一个 LRU 缓存引发的内存泄漏
- 隐形杀手:看不见的内存泄漏如何威胁业务稳定性
- 揭秘内存泄漏的完整调查过程
- 从困境到飞跃:一次精准的诊断

- 隐形杀手:看不见的内存泄漏如何威胁业务稳定性
- 揭秘内存泄漏的完整调查过程
- 从困境到飞跃:一次精准的诊断
技术实战:OpenResty XRay 实现 DNS 服务性能 60% 优化的案例解析
- 当“生命线”DNS 服务遭遇性能危机
- OpenResty XRay 如何一步步调查罪魁祸首
- 精准“治疗”:三步重获新生
- 总结:仅用几分钟,我们做到了什么

- 当“生命线”DNS 服务遭遇性能危机
- OpenResty XRay 如何一步步调查罪魁祸首
- 精准“治疗”:三步重获新生
- 总结:仅用几分钟,我们做到了什么
动态追踪的瑞士军刀:Y 语言如何让动态追踪不再复杂
- 行业痛点:为什么我们迫切需要一门全新的追踪语言?
- 技术硬实力:Y 语言凭什么敢说“革命性”?
- Y 语言语法:熟悉的 C,更强大的追踪能力
- 杀手级应用场景:解决传统工具无法解决的问题
- 全平台支持:没有 Y 语言到不了的地方

- 行业痛点:为什么我们迫切需要一门全新的追踪语言?
- 技术硬实力:Y 语言凭什么敢说“革命性”?
- Y 语言语法:熟悉的 C,更强大的追踪能力
- 杀手级应用场景:解决传统工具无法解决的问题
- 全平台支持:没有 Y 语言到不了的地方
OpenResty XRay 重要突破:无侵入分析 Java 应用内存与 Envoy Lua 性能
- 无需侵入,彻底洞察 Java 应用内存
- 首次打通 Envoy 内 Lua 性能黑盒

- 无需侵入,彻底洞察 Java 应用内存
- 首次打通 Envoy 内 Lua 性能黑盒
为什么动态追踪才是生产环境调试的未来
- 现代软件中看不见的危机
- 传统工具为何会失效?
- 故障排除的新范式:动态追踪
- OpenResty XRay 的独特之处

- 现代软件中看不见的危机
- 传统工具为何会失效?
- 故障排除的新范式:动态追踪
- OpenResty XRay 的独特之处
深入动态追踪技术:OpenResty XRay 如何彻底改变问题诊断方式
- 动态追踪:解决复杂系统问题的利器
- 为什么选择 OpenResty XRay?
- 产品聚焦:XRay 在真实场景中的应用案例
- 常见误区与 FAQ

- 动态追踪:解决复杂系统问题的利器
- 为什么选择 OpenResty XRay?
- 产品聚焦:XRay 在真实场景中的应用案例
- 常见误区与 FAQ
日志、埋点、A/B 测试都不够用了?你该了解“动态追踪”
- 传统方法 vs 动态追踪:效率与控制力的革命
- 动态追踪:系统的“透视眼”
- 从火焰图到系统全景
- 为什么选择 OpenResty XRay?
- 动态追踪的新边界

- 传统方法 vs 动态追踪:效率与控制力的革命
- 动态追踪:系统的“透视眼”
- 从火焰图到系统全景
- 为什么选择 OpenResty XRay?
- 动态追踪的新边界
为什么动态追踪落地难?OpenResty XRay 如何破局?
- 动态追踪技术的落地痛点
- OpenResty XRay:新一代动态追踪解决方案
- 动态追踪的未来

- 动态追踪技术的落地痛点
- OpenResty XRay:新一代动态追踪解决方案
- 动态追踪的未来
可观测性的下一站:OpenResty XRay 如何重新定义问题排查
- 现代软件架构下的问题排查为何越来越难?
- 趋势洞察:可观测技术的未来
- 动态追踪技术是如何打通抽象层的
- 实战案例:在线上 Kong 服务中实时统计插件资源消耗

- 现代软件架构下的问题排查为何越来越难?
- 趋势洞察:可观测技术的未来
- 动态追踪技术是如何打通抽象层的
- 实战案例:在线上 Kong 服务中实时统计插件资源消耗
从黑盒到白盒:OpenResty XRay 让系统问题无所遁形
- OpenResty XRay:黑盒变白盒的动态追踪利器
- 全方位多角度的分析能力
- 实际案例分享
- 产品愿景

- OpenResty XRay:黑盒变白盒的动态追踪利器
- 全方位多角度的分析能力
- 实际案例分享
- 产品愿景
自我优化:OpenResty XRay 的性能蜕变
- 显著的优化成果
- Ylang 语言:动态追踪的理想工具
- 技术协同的典范

- 显著的优化成果
- Ylang 语言:动态追踪的理想工具
- 技术协同的典范
OpenResty XRay 助力脚本性能提升 44 倍
- 真实案例:从发现瓶颈到显著提速
- OpenResty XRay 的工作原理
- 优化效果
- 支适用场景与实践建议

- 真实案例:从发现瓶颈到显著提速
- OpenResty XRay 的工作原理
- 优化效果
- 支适用场景与实践建议
跨介质数据结构漂移:OpenResty XRay 助力性能提升 20 倍
- 性能挑战与突破
- 20 倍性能提升的实际意义
- 未来展望

- 性能挑战与突破
- 20 倍性能提升的实际意义
- 未来展望
从 OOM 到 O(1):OpenResty 流式 JSON 解析器的实现之道
- JSONL 格式与传统 JSON 的区别
- 解决方案
- 技术验证
- 持续优化
- 技术启示

- JSONL 格式与传统 JSON 的区别
- 解决方案
- 技术验证
- 持续优化
- 技术启示
从数天到数小时:OpenResty XRay 如何让 Linux shred 工具提速几十倍
- 问题分析
- XRay 实战效果
- 优化过程
- 应用价值
- 总结与展望

- 问题分析
- XRay 实战效果
- 优化过程
- 应用价值
- 总结与展望
实战分享:OpenResty XRay 让 Ylang 编译器性能翻倍
- 显著的优化成果
- Ylang 语言:动态追踪的理想工具
- 技术协同的典范

- 显著的优化成果
- Ylang 语言:动态追踪的理想工具
- 技术协同的典范
OpenResty XRay 的 Web 控制台快速导览
- Insight 页面介绍
- 自动报告详情
- Dashboard 性能指标仪表盘
- 使用 Guided Analysis 在线分析
- 系统设置与配置页

- Insight 页面介绍
- 自动报告详情
- Dashboard 性能指标仪表盘
- 使用 Guided Analysis 在线分析
- 系统设置与配置页
OpenResty XRay 移动端应用介绍
- 下载和安装 OpenResty XRay 安卓版
- 登录到 OpenResty XRay
- 全自动分析报告
- 在 dashboard 页面查看性能图表数据
- 引导式分析功能

- 下载和安装 OpenResty XRay 安卓版
- 登录到 OpenResty XRay
- 全自动分析报告
- 在 dashboard 页面查看性能图表数据
- 引导式分析功能
新的关于 OpenResty XRay 的常见问答
我们最近为 OpenResty XRay 产品准备了一篇《常见问答》文档

我们最近为 OpenResty XRay 产品准备了一篇《常见问答》文档
OpenResty XRay 的自动分析报告
- 过去
- 现在
- 将来

- 过去
- 现在
- 将来
在 OpenResty 或 Nginx 进程中追踪最慢的 PCRE 正则表达式
- 系统环境
- 无需猜测,缩小问题范围
- 限制 PCRE 的执行开销
- 非回溯正则表达式引擎
- Lua 的内置模式
- 追踪容器内的应用
- 工具的实现方式
- 工具的开销

- 系统环境
- 无需猜测,缩小问题范围
- 限制 PCRE 的执行开销
- 非回溯正则表达式引擎
- Lua 的内置模式
- 追踪容器内的应用
- 工具的实现方式
- 工具的开销
动态追踪技术漫谈
- 什么是动态追踪
- 动态追踪的优点
- DTrace 与 SystemTap
- SystemTap 在生产上的应用
- 火焰图
- 方法论
- 知识就是力量
- 开源与调试符号
- Linux 内核的支持
- 硬件追踪
- 死亡进程的遗骸分析
- 传统的调试技术
- 凌乱的调试世界
- OpenResty XRay

- 什么是动态追踪
- 动态追踪的优点
- DTrace 与 SystemTap
- SystemTap 在生产上的应用
- 火焰图
- 方法论
- 知识就是力量
- 开源与调试符号
- Linux 内核的支持
- 硬件追踪
- 死亡进程的遗骸分析
- 传统的调试技术
- 凌乱的调试世界
- OpenResty XRay
在 Kubernetes 集群上安裝 OpenResty XRay 的 Agent
- 登录控制台
- 在 Kubernetes 集群上安装 Agent
- 配置和检测应用
- 启动分析器和查看分析结果
- 安装另一个 Agent

- 登录控制台
- 在 Kubernetes 集群上安装 Agent
- 配置和检测应用
- 启动分析器和查看分析结果
- 安装另一个 Agent
在 Amazon Linux 上安裝 OpenResty XRay 的 Agent(使用 Bundle 包)
- 登录控制台
- 通过 Bundle 包安装 Agent
- 配置和检测应用
- 启动分析器和查看分析结果
- 安装另一个 Agent

- 登录控制台
- 通过 Bundle 包安装 Agent
- 配置和检测应用
- 启动分析器和查看分析结果
- 安装另一个 Agent
在 Ubuntu 上安裝 OpenResty XRay 的 Agent(使用 APT 包仓库)
- 登录控制台
- 通过 Deb 包安装 Agent
- 检查 Agent 状态和日志
- 配置和检测应用
- 启动分析器和查看分析结果
- 安装另一个 Agent

- 登录控制台
- 通过 Deb 包安装 Agent
- 检查 Agent 状态和日志
- 配置和检测应用
- 启动分析器和查看分析结果
- 安装另一个 Agent
在 CentOs 上安装 OpenResty XRay 的 Agent(使用 RPM 包仓库)
- 登录控制台
- 通过 RPM 包安装 Agent
- 检查 Agent 状态和日志
- 配置和检测应用
- 启动分析器和查看分析结果
- 安装另一个 Agent

- 登录控制台
- 通过 RPM 包安装 Agent
- 检查 Agent 状态和日志
- 配置和检测应用
- 启动分析器和查看分析结果
- 安装另一个 Agent
在微软 Azure 云上安装自主部署版 OpenResty XRay
- 创建订阅和资源组
- 创建 Azure Kubernetes 服务
- 准备环境变量
- 通过命令行登录 Azure
- 为 Kubernetes 创建 namespace 和 secret
- 创建 Azure Disk
- 更新持久化卷的配置文件
- 更新 kubernetes 的配置文件
- 创建持久化卷
- 部署 Kubernetes 服务
- 配置应用网关

- 创建订阅和资源组
- 创建 Azure Kubernetes 服务
- 准备环境变量
- 通过命令行登录 Azure
- 为 Kubernetes 创建 namespace 和 secret
- 创建 Azure Disk
- 更新持久化卷的配置文件
- 更新 kubernetes 的配置文件
- 创建持久化卷
- 部署 Kubernetes 服务
- 配置应用网关
线上快速定位硬盘 I/O 高的 Go 代码路径(使用 OpenResty XRay)
- 问题:硬盘 I/O 高
- 使用引导式分析功能定位有问题的 Go 代码路径
- 全自动分析报告

- 问题:硬盘 I/O 高
- 使用引导式分析功能定位有问题的 Go 代码路径
- 全自动分析报告
线上监控 Go 应用中的程序异常(使用 OpenResty XRay)
- 使用引导式分析功能分析 Go 应用中的程序异常
- 全自动分析报告

- 使用引导式分析功能分析 Go 应用中的程序异常
- 全自动分析报告
使用 OpenResty XRay 定位普罗米修斯应用内部 CPU 最热的 Go 代码路径
- 问题:高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位 CPU 最热的 Go 代码路径
- 全自动分析与报告

- 问题:高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位 CPU 最热的 Go 代码路径
- 全自动分析与报告
CPU 时间是如何耗费在 Go 的 CockroachDB 中的(使用 OpenResty XRay)
- Problem: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能分析 CockroachDB 中 CPU 时间的消耗情况
- 全自动分析报告

- Problem: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能分析 CockroachDB 中 CPU 时间的消耗情况
- 全自动分析报告
追踪 Go 应用时 OpenResty XRay 对系统性能的影响
- 应用性能在分析器运行前的表现
- 分析器运行时对性能的影响
- 实际测算分析器运行对最大吞吐量与请求延时的影响

- 应用性能在分析器运行前的表现
- 分析器运行时对性能的影响
- 实际测算分析器运行对最大吞吐量与请求延时的影响
编写自定义 Ylang 分析器动态追踪 Go 程序(使用 OpenResty XRay)
- 向 Go 变量插入两个键值对
- 编写自定义 Ylang 分析器,动态追踪 Go 程序
- 测试结果

- 向 Go 变量插入两个键值对
- 编写自定义 Ylang 分析器,动态追踪 Go 程序
- 测试结果
Go 的 etcd 服务器把 CPU 时间都花哪儿了(使用 OpenResty XRay)
- 问题: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位最热的 Go 代码路径
- 全自动分析与报告

- 问题: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位最热的 Go 代码路径
- 全自动分析与报告
线上快速定位阻塞线程的 Go 代码路径(使用 OpenResty XRay)
- 问题: CPU 使用率上不去
- 使用 OpenResty XRay 的引导式分析功能定位最占有 off-CPU 时间的 Go 代码路径
- 全自动分析与报告

- 问题: CPU 使用率上不去
- 使用 OpenResty XRay 的引导式分析功能定位最占有 off-CPU 时间的 Go 代码路径
- 全自动分析与报告
线上快速定位 CPU 最热的 Go 代码路径(使用 OpenResty XRay)
- 问题: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位最热的 Go 代码路径
- 全自动分析与报告

- 问题: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位最热的 Go 代码路径
- 全自动分析与报告
线上快速定位硬盘 I/O 高的 Python 代码路径(使用 OpenResty XRay)
- 问题:硬盘 I/O 高
- 定位有问题的 Python 代码路径
- 全自动分析报告

- 问题:硬盘 I/O 高
- 定位有问题的 Python 代码路径
- 全自动分析报告
追踪 Python 应用时 OpenResty XRay 对系统性能的影响(使用OpenResty XRay)
- 应用性能在分析器运行前的表现
- 分析器运行时对性能的影响
- 实际测算分析器运行对最大吞吐量与请求延时的影响

- 应用性能在分析器运行前的表现
- 分析器运行时对性能的影响
- 实际测算分析器运行对最大吞吐量与请求延时的影响
Python 的 Django 应用内部是如何使用内存的(使用 OpenResty XRay)
- 问题: 内存占用量高
- 使用 OpenResty XRay 的引导式分析功能分析 Django 应用
- 全自动分析与报告

- 问题: 内存占用量高
- 使用 OpenResty XRay 的引导式分析功能分析 Django 应用
- 全自动分析与报告
线上定位 Python 进程中的大内存对象(使用 OpenResty XRay)
- 问题:内存占用率过高
- 使用 OpenResty XRay 的引导式分析功能定位 Python 进程中的大内存对象或值
- 全自动分析与报告

- 问题:内存占用率过高
- 使用 OpenResty XRay 的引导式分析功能定位 Python 进程中的大内存对象或值
- 全自动分析与报告
线上快速定位导致 CPU 上不去的 Python 代码路径(使用 OpenResty XRay)
- 问题: CPU 使用率上不去
- 使用 OpenResty XRay 的引导式分析功能定位最占有 off-CPU 时间的 Python 代码路径
- 全自动分析与报告

- 问题: CPU 使用率上不去
- 使用 OpenResty XRay 的引导式分析功能定位最占有 off-CPU 时间的 Python 代码路径
- 全自动分析与报告
OpenResty XRay Java 函数探针:无侵入式函数监控实践
- 什么是无侵入式函数探针?
- OpenResty XRay 的无侵入式探针,有哪些特别之处?
- 实战演示:监控函数参数
- 技术优势与应用场景

- 什么是无侵入式函数探针?
- OpenResty XRay 的无侵入式探针,有哪些特别之处?
- 实战演示:监控函数参数
- 技术优势与应用场景
分析 Tomcat Java Web 应用请求延时(使用 OpenResty XRay)
- 分析 Tomcat Java Web 应用请求延时
- 请求抓取的灵活过滤条件
- 详细的请求信息捕获
- PCAP 包捕获功能
- 实际应用示例

- 分析 Tomcat Java Web 应用请求延时
- 请求抓取的灵活过滤条件
- 详细的请求信息捕获
- PCAP 包捕获功能
- 实际应用示例
分析线上 Java 应用的 CPU,off-CPU 和硬盘 IO 使用情况(使用 OpenResty XRay)
- Java 应用中的高 CPU 使用率问题
- Java 应用中的 CPU 阻塞问题
- Java 应用中的高硬盘 IO 问题
- 支持的 Java 版本和操作系统
- 性能影响和额外负担
- 下一步的计划

- Java 应用中的高 CPU 使用率问题
- Java 应用中的 CPU 阻塞问题
- Java 应用中的高硬盘 IO 问题
- 支持的 Java 版本和操作系统
- 性能影响和额外负担
- 下一步的计划
线上监控 Perl 应用中的程序异常(使用 OpenResty XRay)
- 使用引导式分析功能分析 Perl 应用中的程序异常
- 全自动分析报告

- 使用引导式分析功能分析 Perl 应用中的程序异常
- 全自动分析报告
线上快速定位阻塞线程的 Perl 代码路径(使用 OpenResty XRay)
- 问题: CPU 使用率上不去
- 使用 OpenResty XRay 的引导式分析功能定位最占有 off-CPU 时间的 Perl 代码路径
- 全自动分析与报告

- 问题: CPU 使用率上不去
- 使用 OpenResty XRay 的引导式分析功能定位最占有 off-CPU 时间的 Perl 代码路径
- 全自动分析与报告
追踪 Perl 应用时 OpenResty XRay 对系统性能的影响
- 应用性能在分析器运行前的表现
- 分析器运行时对性能的影响
- 实际测算分析器运行对最大吞吐量与请求延时的影响

- 应用性能在分析器运行前的表现
- 分析器运行时对性能的影响
- 实际测算分析器运行对最大吞吐量与请求延时的影响
线上定位 Perl 进程中的大内存对象(使用 OpenResty XRay)
- 问题: 内存占用率过高
- 使用 OpenResty XRay 的引导式分析功能定位 Perl 进程中的大内存对象或值
- 全自动分析与报告

- 问题: 内存占用率过高
- 使用 OpenResty XRay 的引导式分析功能定位 Perl 进程中的大内存对象或值
- 全自动分析与报告
线上快速定位 CPU 最热的 Perl 代码路径(使用 OpenResty XRay)
- 问题: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位最热的 Perl 代码路径
- 全自动分析与报告

- 问题: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位最热的 Perl 代码路径
- 全自动分析与报告
线上快速定位硬盘 I/O 高的 Rust 代码路径(使用 OpenResty XRay)
- 问题:硬盘 I/O 高
- 定位有问题的 Rust 代码路径
- 全自动分析报告

- 问题:硬盘 I/O 高
- 定位有问题的 Rust 代码路径
- 全自动分析报告
线上监控 Rust 应用中的程序异常(使用 OpenResty XRay)
- 使用引导式分析功能分析 Rust 应用中的程序异常
- 全自动分析报告

- 使用引导式分析功能分析 Rust 应用中的程序异常
- 全自动分析报告
追踪 Rust 应用时 OpenResty XRay 对系统性能的影响(使用OpenResty XRay)
- 应用性能在分析器运行前的表现
- 分析器运行时对性能的影响
- 实际测算分析器运行对最大吞吐量与请求延时的影响

- 应用性能在分析器运行前的表现
- 分析器运行时对性能的影响
- 实际测算分析器运行对最大吞吐量与请求延时的影响
CPU 时间是如何耗费在 Rust 的 Sled 库内部的(使用 OpenResty XRay)
- 问题:高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能分析 Rust 的 Sled 库中 CPU 时间的消耗情况
- 全自动分析与报告

- 问题:高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能分析 Rust 的 Sled 库中 CPU 时间的消耗情况
- 全自动分析与报告
使用 C++ 动态追踪 C++ 应用
- 设置目标 C++ 程序
- 编写 C++(或 Y++)分析器
- 将目标和分析器投入运行
- 支持复杂 C++ 应用的进展
- 关于调试符号
- 结论

- 设置目标 C++ 程序
- 编写 C++(或 Y++)分析器
- 将目标和分析器投入运行
- 支持复杂 C++ 应用的进展
- 关于调试符号
- 结论
线上快速定位 CPU 最热的 Erlang 代码路径(使用 OpenResty XRay)
- 问题:高 CPU 使用率
- 使用引导式分析功能定位 CPU 最热的 Erlang 代码路径
- 全自动分析与报告

- 问题:高 CPU 使用率
- 使用引导式分析功能定位 CPU 最热的 Erlang 代码路径
- 全自动分析与报告
分析缺失调试符号的 OpenResty/Nginx 应用(使用 OpenResty XRay)
- 问题:应用缺失调试符号
- 自动分析与重建调试符号
- 全自动分析与报告

- 问题:应用缺失调试符号
- 自动分析与重建调试符号
- 全自动分析与报告
自动分析 Core Dump(使用 OpenResty XRay)
- 查看 core dump 文件
- 使用 OpenResty XRay 的引导式分析功能分析 core dump 文件
- 全自动分析与报告

- 查看 core dump 文件
- 使用 OpenResty XRay 的引导式分析功能分析 core dump 文件
- 全自动分析与报告
CPU 时间是如何耗费在 Envoy 服务器内部的(使用 OpenResty XRay)
- 问题:高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能分析 Envoy 服务器中 CPU 时间的消耗情况
- 全自动分析报告

- 问题:高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能分析 Envoy 服务器中 CPU 时间的消耗情况
- 全自动分析报告
如何使用 OpenResty XRay 排查 HTTP 504 超时错误
- 问题:HTTP 504 网关超时错误
- 使用 OpenResty XRay 的引导式分析功能排查错误
- 全自动分析与报告

- 问题:HTTP 504 网关超时错误
- 使用 OpenResty XRay 的引导式分析功能排查错误
- 全自动分析与报告
CPU 时间是如何耗费在 llama.cpp 程序和 LLaMA2 模型内部的(使用 OpenResty XRay)
- 问题: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位最热的 C++ 代码路径
- 全自动分析与报告

- 问题: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位最热的 C++ 代码路径
- 全自动分析与报告
Ylang:适用于 eBPF、Stap+、GDB 等框架的通用语言(第四集,全四集)
- 透明的跨容器追踪
- 高效的栈展开
- 分析已终止进程(core dumps)
- 极低的追踪开销
- 标准 Y 语言库和工具
- 网络过滤和控制
- Y 语言编译器的实现
- 操作系统支持
- 对开源社区的贡献
- 结论
- 致谢

- 透明的跨容器追踪
- 高效的栈展开
- 分析已终止进程(core dumps)
- 极低的追踪开销
- 标准 Y 语言库和工具
- 网络过滤和控制
- Y 语言编译器的实现
- 操作系统支持
- 对开源社区的贡献
- 结论
- 致谢
Ylang: 适用于 eBPF、Stap+、GDB 等框架的通用语言(第三集,全四集)
- Y 语言的语法(接上文)
- 字符串
- 内置的正则表达式支持
- 完整控制流支持
- 浮点数支持
- 与开源工具链的比较
- 清晰的调试符号方式
- 调试符号:无运行期系统开销
- 集中的软件包数据库
- 模糊匹配调试符号

- Y 语言的语法(接上文)
- 字符串
- 内置的正则表达式支持
- 完整控制流支持
- 浮点数支持
- 与开源工具链的比较
- 清晰的调试符号方式
- 调试符号:无运行期系统开销
- 集中的软件包数据库
- 模糊匹配调试符号
Ylang:适用于 eBPF、Stap+、GDB 等框架的通用语言(第二集,全四集)
- 语言语法(接上文)
- 宏拓展
- 追踪者与被追踪者空间
- 探针
- 拓展变量类型

- 语言语法(接上文)
- 宏拓展
- 追踪者与被追踪者空间
- 探针
- 拓展变量类型
捕捉 Linux 内核追踪子系统中的两个 bug(使用 OpenResty XRay)
- 读取用户空间内存时的内核死锁
- 内核中 x86 断点插入的数据竞争

- 读取用户空间内存时的内核死锁
- 内核中 x86 断点插入的数据竞争
线上快速定位 CPU 最热的 Lua 代码路径(使用 OpenResty XRay)
- 问题: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位最热的 Lua 代码路径
- 全自动分析与报告

- 问题: 高 CPU 使用率
- 使用 OpenResty XRay 的引导式分析功能定位最热的 Lua 代码路径
- 全自动分析与报告
我们是如何解决了一个自定义 Kong 插件中的 Lua 异常所引起的 CPU 瓶颈的(使用 OpenResty XRay)
- 问题:Kong 服务器中的高 CPU 使用率
- 分析和报告
- 结果:提高了性能,降低了 CPU 使用率

- 问题:Kong 服务器中的高 CPU 使用率
- 分析和报告
- 结果:提高了性能,降低了 CPU 使用率
在线上 Kong 服务进程中实时统计 CPU 和内存用量最高的插件(使用 OpenResty XRay)
- 服务器进程中所有 Kong 插件的 CPU 使用情况
- 服务器进程中所有 Kong 插件的内存使用情况
- 服务器的额外负担
- 下一步是什么?

- 服务器进程中所有 Kong 插件的 CPU 使用情况
- 服务器进程中所有 Kong 插件的内存使用情况
- 服务器的额外负担
- 下一步是什么?
Ylang: 适用于 eBPF、Stap+、GDB 等框架的通用语言(第一集,全四集)
- 什么是动态追踪
- 为什么命名为 “Y”
- 入门
- 各种后端和运行时
- 为什么要使用一个统一的前端语言
- 语言的语法
- 未完待续

- 什么是动态追踪
- 为什么命名为 “Y”
- 入门
- 各种后端和运行时
- 为什么要使用一个统一的前端语言
- 语言的语法
- 未完待续
自动诊断线上请求的 200ms 额外延时
- 问题
- 分析过程
- 全自动化的分析
- OpenResty XRay 是什么

- 问题
- 分析过程
- 全自动化的分析
- OpenResty XRay 是什么
使用 OpenResty XRay 的命令行工具定位泄漏的 Lua table
- LuaJIT 如何管理内存
- OpenResty XRay 的命令行工具
- 泄漏示例
- 分析过程
- lj-gco-ref 分析器
- 全自动分析

- LuaJIT 如何管理内存
- OpenResty XRay 的命令行工具
- 泄漏示例
- 分析过程
- lj-gco-ref 分析器
- 全自动分析
使用 YSQL 语言对 Nginx 进程进行实时请求计数
- 如何安装 run-ysql 工具
- 统计实时总请求数
- 筛选出特定的请求
- 在 Web 控制台中使用 YSQL
- 真正的非侵入式追踪

- 如何安装 run-ysql 工具
- 统计实时总请求数
- 筛选出特定的请求
- 在 Web 控制台中使用 YSQL
- 真正的非侵入式追踪
当 Lua IPC 管道阻塞 OpenResty 或 Nginx 事件循环的时候
- 问题
- 分析
- 解决方案
- 结果

- 问题
- 分析
- 解决方案
- 结果
优化超大 Nginx 配置导致的内存碎片
- 挑战
- 分析
- 解决方案
- 结果

- 挑战
- 分析
- 解决方案
- 结果
QCon 北京 2023 大会上关于深度分析和诊断 K8s 容器应用的演讲
本周我受邀在 QCon 北京 2023 大会上作了一次远程分享。

本周我受邀在 QCon 北京 2023 大会上作了一次远程分享。
在 OpenResty 或 Nginx 进程中列出已加载的 Lua 模块
- 系统环境
- 已加载 Lua 模块的名称
- 直接在 Web 控制台中运行
- 追踪容器内的应用
- 工具的实现方式
- 工具的开销

- 系统环境
- 已加载 Lua 模块的名称
- 直接在 Web 控制台中运行
- 追踪容器内的应用
- 工具的实现方式
- 工具的开销
分析 OpenResty 或 Nginx 中最耗 CPU 的请求
- 系统环境
- 最耗 CPU 的请求主机名
- 最耗 CPU 的请求 URI
- 深入挖掘
- 直接在 Web 控制台中运行
- 追踪容器内的应用
- 工具的实现方式
- 工具的开销

- 系统环境
- 最耗 CPU 的请求主机名
- 最耗 CPU 的请求 URI
- 深入挖掘
- 直接在 Web 控制台中运行
- 追踪容器内的应用
- 工具的实现方式
- 工具的开销
内存减少 60%,OpenResty XRay 精准定位问题代码,快速完成修复上线
- worker 进程内存占用高
- 分析过程
- worker 进程内存不释放的疑问

- worker 进程内存占用高
- 分析过程
- worker 进程内存不释放的疑问
Lua 级别 CPU 火焰图简介
- 什么是火焰图
- 简单的 Lua 样例
- 复杂的 Lua 应用
- 采样开销
- 安全性
- 兼容性
- 其他类型的 Lua 级别火焰图

- 什么是火焰图
- 简单的 Lua 样例
- 复杂的 Lua 应用
- 采样开销
- 安全性
- 兼容性
- 其他类型的 Lua 级别火焰图
OpenResty 与 Nginx 共享内存区的内存碎片问题
- 空的共享内存区
- 填充类似大小的条目
- 删除奇数键
- 删除前半部分的键
- 缓解内存碎片

- 空的共享内存区
- 填充类似大小的条目
- 删除奇数键
- 删除前半部分的键
- 缓解内存碎片
OpenResty 和 Nginx 的共享内存区是如何消耗物理内存的
- Slab 与内存页
- 分配的内存不一定有消耗
- 虚假的内存泄漏
- HUP 重新加载

- Slab 与内存页
- 分配的内存不一定有消耗
- 虚假的内存泄漏
- HUP 重新加载
OpenResty 和 Nginx 如何分配和管理内存
- 系统层面
- 应用层面
- 传统的 Nginx 服务器

- 系统层面
- 应用层面
- 传统的 Nginx 服务器
LuaJIT GC64 模式
- 老的内存限制
- 何时会碰到这个内存限制
- 内存限制是每进程的
- GC 管理的内存
- 不由 GC 管理的内存
- 提升 x64 模式的内存上限到 4 GB
- 新的 GC64 模式
- 如何开启 GC64 模式
- 性能影响
- 调试分析工具链

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


