精选文章

Photo by Philip Brown

动态追踪技术漫谈

动态追踪技术漫谈

Photo by OpenResty Inc.

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

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

二进制漏洞扫描:识别 Backport 补丁,消除误报

二进制漏洞扫描:识别 Backport 补丁,消除误报

二进制漏洞扫描:识别 Backport 补丁,消除误报

OpenResty XRay 是什么

OpenResty XRay 是什么

OpenResty XRay 是什么

Nginx 反向代理 QPS 暴跌 15 倍:upstream keepalive 缺失与 -O0 编译选项的根因定位

Nginx 反向代理 QPS 暴跌 15 倍:upstream keepalive 缺失与 -O0 编译选项的根因定位

Nginx 反向代理 QPS 暴跌 15 倍:upstream keepalive 缺失与 -O0 编译选项的根因定位

Photo by 章亦春

无侵入式 Java 探针:生产环境无 Java Agent 捕获方法参数

无侵入式 Java 探针:生产环境无 Java Agent 捕获方法参数

Photo by Jose G. Ortega Castro

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

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

Photo by Harrison Broadbent

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

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

借助 OpenResty XRay,显著优化性能,CPU 使用率立减  90%
借助 OpenResty XRay,显著优化性能,CPU 使用率立减 90%
申请免费试用

最新文章

OpenResty XRay 助力脚本性能提升 44 倍

  • 真实案例:从发现瓶颈到显著提速
  • OpenResty XRay 的工作原理
  • 优化效果
  • 支适用场景与实践建议
Photo by 章亦春
  • 真实案例:从发现瓶颈到显著提速
  • OpenResty XRay 的工作原理
  • 优化效果
  • 支适用场景与实践建议

Java Tomcat 响应慢:用单请求 PCAP 精准定位慢请求

  • 诊断 Tomcat 响应慢,精准捕获慢请求
  • 选择性抓包:按响应时间、状态码、路径过滤
  • 每个慢请求单独下载对应 PCAP 包
  • 区分服务端延迟与网络延迟
  • 支持 Spring Boot 内嵌 Tomcat 场景
Photo by 章亦春
  • 诊断 Tomcat 响应慢,精准捕获慢请求
  • 选择性抓包:按响应时间、状态码、路径过滤
  • 每个慢请求单独下载对应 PCAP 包
  • 区分服务端延迟与网络延迟
  • 支持 Spring Boot 内嵌 Tomcat 场景

Java 应用性能剖析:CPU、Off-CPU 与磁盘 I/O 分析(无 Safepoint 偏差)

  • 用火焰图剖析 Java CPU 热点
  • Off-CPU Java 性能分析:锁等待与阻塞诊断
  • Java 磁盘 I/O 剖析:追踪文件与套接字写入
  • 支持 OpenJDK 8/11/17/21 应用剖析
  • 自动化采样与专家分析
  • 性能影响与开销
  • 常见问题
Photo by 章亦春
  • 用火焰图剖析 Java CPU 热点
  • Off-CPU Java 性能分析:锁等待与阻塞诊断
  • Java 磁盘 I/O 剖析:追踪文件与套接字写入
  • 支持 OpenJDK 8/11/17/21 应用剖析
  • 自动化采样与专家分析
  • 性能影响与开销
  • 常见问题

OpenResty XRay 的 Web 控制台快速导览

  • Insight 页面介绍
  • 自动报告详情
  • Dashboard 性能指标仪表盘
  • 使用 Guided Analysis 在线分析
  • 系统设置与配置页
  • Insight 页面介绍
  • 自动报告详情
  • Dashboard 性能指标仪表盘
  • 使用 Guided Analysis 在线分析
  • 系统设置与配置页

Rust 进程硬盘 I/O 高的原因定位方法

  • 定位硬盘 I/O 高的 Rust 进程
  • 使用火焰图追踪 Rust 磁盘写入热点代码路径
  • 自动磁盘 I/O 分析报告
  • 常见问题
  • 定位硬盘 I/O 高的 Rust 进程
  • 使用火焰图追踪 Rust 磁盘写入热点代码路径
  • 自动磁盘 I/O 分析报告
  • 常见问题

OpenResty XRay 移动端应用介绍

  • 下载和安装 OpenResty XRay 安卓版
  • 登录到 OpenResty XRay
  • 全自动分析报告
  • 在 dashboard 页面查看性能图表数据
  • 引导式分析功能
  • 下载和安装 OpenResty XRay 安卓版
  • 登录到 OpenResty XRay
  • 全自动分析报告
  • 在 dashboard 页面查看性能图表数据
  • 引导式分析功能

PHP 内存分析器:定位线上 PHP 进程中最大的内存对象

  • 现象: PHP 进程在 top 中占用大量内存
  • 用 OpenResty XRay 引导式分析剖析进程,找出最大的 PHP 对象
  • 把最大的对象追溯到它的源码行
  • 用 Insights 报告自动监控 PHP 进程内存
  • 常见问题
  • 关于 OpenResty XRay
  • 现象: PHP 进程在 top 中占用大量内存
  • 用 OpenResty XRay 引导式分析剖析进程,找出最大的 PHP 对象
  • 把最大的对象追溯到它的源码行
  • 用 Insights 报告自动监控 PHP 进程内存
  • 常见问题
  • 关于 OpenResty XRay

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

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

Erlang 高 CPU 使用率:通过火焰图追踪 PCRE 正则瓶颈

  • 观察 Erlang 进程 CPU 使用率超过 200%
  • 使用 OpenResty XRay 分析 Erlang CPU 使用率
  • C 语言级别分析:erts_pcre_exec 与 PCRE 回溯
  • PCRE 正则回溯在 BEAM VM 中为何代价高昂
  • 自动监控与报告
  • 常见问题:Erlang 高 CPU 使用率
  • 观察 Erlang 进程 CPU 使用率超过 200%
  • 使用 OpenResty XRay 分析 Erlang CPU 使用率
  • C 语言级别分析:erts_pcre_exec 与 PCRE 回溯
  • PCRE 正则回溯在 BEAM VM 中为何代价高昂
  • 自动监控与报告
  • 常见问题:Erlang 高 CPU 使用率

生产环境内存泄漏定位:从 RSS 飙升到源码行号的分层归因

  • 症状:只升不降的内存曲线
  • 内存泄漏还是内存占用高?
  • 四类泄漏模式的真实根因链
  • 看起来在涨,其实不是泄漏
  • 如何定位泄漏:自顶向下的分层归因
  • 传统工具为什么在生产环境里不够用
  • 常见问题
  • 症状:只升不降的内存曲线
  • 内存泄漏还是内存占用高?
  • 四类泄漏模式的真实根因链
  • 看起来在涨,其实不是泄漏
  • 如何定位泄漏:自顶向下的分层归因
  • 传统工具为什么在生产环境里不够用
  • 常见问题

Off-CPU 分析实战:CPU 使用率低但延迟高的四类根因与定位方法

  • Off-CPU 时间是什么?
  • 症状:CPU 使用率上不去,请求却在排队
  • 四类 Off-CPU 根因的真实根因链
  • 如何量化 Off-CPU 时间
  • On-CPU + Off-CPU = 挂钟时间:全局视角与工具生态
  • 常见问题
  • Off-CPU 时间是什么?
  • 症状:CPU 使用率上不去,请求却在排队
  • 四类 Off-CPU 根因的真实根因链
  • 如何量化 Off-CPU 时间
  • On-CPU + Off-CPU = 挂钟时间:全局视角与工具生态
  • 常见问题

不改代码、不重启服务:OpenResty XRay 如何对生产环境做全栈动态追踪

  • 现有动态追踪框架的技术权衡与生产环境局限性
  • OpenResty XRay 的动态追踪架构级突破
  • 全栈火焰图
  • 能力边界的持续扩展
  • 现有动态追踪框架的技术权衡与生产环境局限性
  • OpenResty XRay 的动态追踪架构级突破
  • 全栈火焰图
  • 能力边界的持续扩展

OpenResty XRay 是什么

  • 以“零侵入”重构生产环境性能分析
  • 将海量遥测数据转化为可执行的洞察
  • 适应弹性架构的无感观测能力
  • 赋能高可用架构的长期主义
  • 以“零侵入”重构生产环境性能分析
  • 将海量遥测数据转化为可执行的洞察
  • 适应弹性架构的无感观测能力
  • 赋能高可用架构的长期主义

一次无法重启的 Nginx 内存泄漏,我们是如何在生产环境把它抓出来的

  • 一次生产环境内存泄漏的完整解剖
  • 为什么这类问题几乎无解?
  • 从“靠运气”到“可预测”
  • 当性能问题超越“工具”范畴”
  • 一次生产环境内存泄漏的完整解剖
  • 为什么这类问题几乎无解?
  • 从“靠运气”到“可预测”
  • 当性能问题超越“工具”范畴”

Nginx 反向代理 QPS 暴跌 15 倍:upstream keepalive 缺失与 -O0 编译选项的根因定位

  • Nginx 反向代理慢 15 倍,日志却零报错
  • 火焰图暴露连接风暴:upstream keepalive 缺失
  • 剩下的 10% 差距:基线对比指向编译器
  • -O0 调试编译如何吃掉我们 10% 的性能
  • 15 倍 QPS 差异的工程性复盘
  • Nginx 反向代理慢 15 倍,日志却零报错
  • 火焰图暴露连接风暴:upstream keepalive 缺失
  • 剩下的 10% 差距:基线对比指向编译器
  • -O0 调试编译如何吃掉我们 10% 的性能
  • 15 倍 QPS 差异的工程性复盘

我们如何在一个 500k QPS 的 OpenResty 网关中定位 244 毫秒的性能异常

  • 被健康平均值掩盖的延迟尖刺与 CPU 浪费
  • 无需改代码、无需重启:OpenResty 延迟问题排查
  • 优化结果:延迟毛刺消除,CPU 使用率下降 30%
  • 常见问题
  • 被健康平均值掩盖的延迟尖刺与 CPU 浪费
  • 无需改代码、无需重启:OpenResty 延迟问题排查
  • 优化结果:延迟毛刺消除,CPU 使用率下降 30%
  • 常见问题

如何在生产环境中定位 Java 内存泄漏——无需堆转储、无需重启

  • 为什么多次 Full GC 后堆内存仍未回落
  • 如何在不导出堆转储的情况下定位生产环境的 Java 内存泄漏
  • 如何定位 Java 内存泄漏:一套可复用的三步法
  • 为什么用 OpenResty XRay 定位 Java 内存泄漏
  • 常见问题
  • 为什么多次 Full GC 后堆内存仍未回落
  • 如何在不导出堆转储的情况下定位生产环境的 Java 内存泄漏
  • 如何定位 Java 内存泄漏:一套可复用的三步法
  • 为什么用 OpenResty XRay 定位 Java 内存泄漏
  • 常见问题

Gzip CPU 占用过高的根因:压缩级别 6 吃掉了 54% 的 CPU

  • Gzip 压缩如何在生产环境中吃掉了 54% 的 CPU
  • Gzip CPU 占用为何如此之高:配置级根因诊断
  • 量化 Gzip 与 Brotli 的 CPU 开销
  • 从凭感觉到数据驱动的压缩调优
  • Gzip 压缩如何在生产环境中吃掉了 54% 的 CPU
  • Gzip CPU 占用为何如此之高:配置级根因诊断
  • 量化 Gzip 与 Brotli 的 CPU 开销
  • 从凭感觉到数据驱动的压缩调优

Nginx C++ 模块内存泄漏:生产环境不重启定位根因

  • 生产环境难题:无法用 GDB 调试的 C++ 模块内存泄漏
  • 火焰图如何锁定 ngx_dubbo_module 中的泄漏函数
  • 从被动应对到主动赋能:XRay 带来的排障新闭环
  • 总结
  • 生产环境难题:无法用 GDB 调试的 C++ 模块内存泄漏
  • 火焰图如何锁定 ngx_dubbo_module 中的泄漏函数
  • 从被动应对到主动赋能:XRay 带来的排障新闭环
  • 总结

OpenResty XRay 如何用 Node.js 函数探针实现监控新范式

  • 为什么你需要无侵入式函数探针的新范式?
  • 实战演示:监控函数参数
  • 顶尖团队如何利用无侵入式探针提升研发效能?
  • 总结
Photo by 章亦春
  • 为什么你需要无侵入式函数探针的新范式?
  • 实战演示:监控函数参数
  • 顶尖团队如何利用无侵入式探针提升研发效能?
  • 总结

Nginx Worker 进程 RPS 上不去:追踪到 75 毫秒的事件循环阻塞

  • 负载很高却没干活:缺失 worker_cpu_affinity 导致的 CPU 争抢
  • 阻塞的 Lua IO 操作如何拖停 Nginx 事件循环
  • 量化文件 IO 延时:单次最高 1.5 毫秒
  • Nginx 事件循环阻塞有多严重?43952 个样本、最大 75 毫秒
  • 常见问题
  • 负载很高却没干活:缺失 worker_cpu_affinity 导致的 CPU 争抢
  • 阻塞的 Lua IO 操作如何拖停 Nginx 事件循环
  • 量化文件 IO 延时:单次最高 1.5 毫秒
  • Nginx 事件循环阻塞有多严重?43952 个样本、最大 75 毫秒
  • 常见问题

零侵入 Node.js CPU 性能分析:火焰图实战

  • Node.js 应用中的高 CPU 使用率问题
  • Node.js 应用中的 CPU 阻塞问题
  • 支持的 Node.js 版本和操作系统
  • 性能影响和额外负担
  • 下一步的计划
Photo by 章亦春
  • Node.js 应用中的高 CPU 使用率问题
  • Node.js 应用中的 CPU 阻塞问题
  • 支持的 Node.js 版本和操作系统
  • 性能影响和额外负担
  • 下一步的计划

从崩溃到根因:OpenResty XRay 如何将 Nginx 内存踩踏问题分析得明明白白

  • 案例背景:日志无法解释的 Nginx worker 进程频繁崩溃
  • 分析录制文件:把崩溃过程回放回“第一现场”
  • 根因:Nginx 连接生命周期中的 Use-After-Free
  • 常见问题(FAQ)
  • 案例背景:日志无法解释的 Nginx worker 进程频繁崩溃
  • 分析录制文件:把崩溃过程回放回“第一现场”
  • 根因:Nginx 连接生命周期中的 Use-After-Free
  • 常见问题(FAQ)

UDB + OpenResty XRay:解锁 OpenResty 应用性能之谜

  • OpenResty XRay 如何协同 UDB 增效
  • 实战:使用 UDB 与 OpenResty XRay 分析 OpenResty 应用的 Lua 代码调用栈
  • 时间旅行调试的优势
Photo by 章亦春
  • OpenResty XRay 如何协同 UDB 增效
  • 实战:使用 UDB 与 OpenResty XRay 分析 OpenResty 应用的 Lua 代码调用栈
  • 时间旅行调试的优势

如何用时间旅行调用栈调试 Java 文件 I/O

  • IDE 断点和 coredump 在 Java 文件 I/O 排查中的短板
  • 从 native write() 系统调用重建完整的 Java 调用栈
  • 用时间旅行回放一步步调试 Java 文件 I/O
  • 常见问题
Photo by 章亦春
  • IDE 断点和 coredump 在 Java 文件 I/O 排查中的短板
  • 从 native write() 系统调用重建完整的 Java 调用栈
  • 用时间旅行回放一步步调试 Java 文件 I/O
  • 常见问题

追踪 OpenResty 中 LRU 缓存引发的内存泄漏 —— 根因竟是缓存的 SSL 证书

  • 为什么一个低流量的 OpenResty 应用会持续泄漏内存
  • 一步步追踪 LRU 缓存内存泄漏的完整过程
  • 最终结果:从无限增长到内存平稳
  • 为什么一个低流量的 OpenResty 应用会持续泄漏内存
  • 一步步追踪 LRU 缓存内存泄漏的完整过程
  • 最终结果:从无限增长到内存平稳

Nginx Worker CPU 占用不均:定位未启用 reuseport 与 cjson 解析瓶颈

  • 症状:部分 Nginx Worker 进程 CPU 打满,其余接近空闲
  • OpenResty XRay 如何定位根因
  • 修复:三项优化与各自的实测收益
  • 总结:OpenResty XRay 几分钟内的发现
  • 常见问题
  • 症状:部分 Nginx Worker 进程 CPU 打满,其余接近空闲
  • OpenResty XRay 如何定位根因
  • 修复:三项优化与各自的实测收益
  • 总结:OpenResty XRay 几分钟内的发现
  • 常见问题

动态追踪的瑞士军刀:Y 语言如何让动态追踪不再复杂

  • 行业痛点:为什么我们迫切需要一门全新的追踪语言?
  • 技术硬实力:Y 语言凭什么敢说“革命性”?
  • Y 语言语法:熟悉的 C,更强大的追踪能力
  • 杀手级应用场景:解决传统工具无法解决的问题
  • 全平台支持:没有 Y 语言到不了的地方
  • 行业痛点:为什么我们迫切需要一门全新的追踪语言?
  • 技术硬实力:Y 语言凭什么敢说“革命性”?
  • Y 语言语法:熟悉的 C,更强大的追踪能力
  • 杀手级应用场景:解决传统工具无法解决的问题
  • 全平台支持:没有 Y 语言到不了的地方

深入动态追踪技术:OpenResty XRay 如何彻底改变问题诊断方式

  • 动态追踪:解决复杂系统问题的利器
  • 为什么选择 OpenResty XRay?
  • 产品聚焦:XRay 在真实场景中的应用案例
  • 常见误区与 FAQ
  • 动态追踪:解决复杂系统问题的利器
  • 为什么选择 OpenResty XRay?
  • 产品聚焦:XRay 在真实场景中的应用案例
  • 常见误区与 FAQ

日志、埋点、A/B 测试都不够用了?你该了解”动态追踪”

  • 传统方法 vs 动态追踪:效率与控制力的革命
  • 动态追踪:系统的“透视眼”
  • 从火焰图到系统全景
  • 为什么选择 OpenResty XRay?
  • 动态追踪的新边界
  • 传统方法 vs 动态追踪:效率与控制力的革命
  • 动态追踪:系统的“透视眼”
  • 从火焰图到系统全景
  • 为什么选择 OpenResty XRay?
  • 动态追踪的新边界

可观测性的下一站:OpenResty XRay 如何重新定义问题排查

  • 现代软件架构下的问题排查为何越来越难?
  • 趋势洞察:可观测技术的未来
  • 动态追踪技术是如何打通抽象层的
  • 实战案例:在线上 Kong 服务中实时统计插件资源消耗
  • 现代软件架构下的问题排查为何越来越难?
  • 趋势洞察:可观测技术的未来
  • 动态追踪技术是如何打通抽象层的
  • 实战案例:在线上 Kong 服务中实时统计插件资源消耗

OpenResty XRay 助力脚本性能提升 44 倍

  • 真实案例:从发现瓶颈到显著提速
  • OpenResty XRay 的工作原理
  • 优化效果
  • 支适用场景与实践建议
Photo by 章亦春
  • 真实案例:从发现瓶颈到显著提速
  • OpenResty XRay 的工作原理
  • 优化效果
  • 支适用场景与实践建议

OpenResty XRay 的 Web 控制台快速导览

  • Insight 页面介绍
  • 自动报告详情
  • Dashboard 性能指标仪表盘
  • 使用 Guided Analysis 在线分析
  • 系统设置与配置页
  • Insight 页面介绍
  • 自动报告详情
  • Dashboard 性能指标仪表盘
  • 使用 Guided Analysis 在线分析
  • 系统设置与配置页

OpenResty XRay 移动端应用介绍

  • 下载和安装 OpenResty XRay 安卓版
  • 登录到 OpenResty XRay
  • 全自动分析报告
  • 在 dashboard 页面查看性能图表数据
  • 引导式分析功能
  • 下载和安装 OpenResty XRay 安卓版
  • 登录到 OpenResty XRay
  • 全自动分析报告
  • 在 dashboard 页面查看性能图表数据
  • 引导式分析功能

Nginx 正则性能:用动态追踪定位最慢的正则模式

  • 前提条件与环境
  • 用 CPU 火焰图定位慢正则
  • 正则优化后的性能对比
  • 用 lua_regex_match_limit 限制 PCRE 回溯
  • 非回溯引擎:RE2 与 OpenResty Regex
  • Lua 内置模式作为正则替代
  • 在 Docker 和 Kubernetes 中追踪正则性能
  • 动态追踪工具的实现原理
  • 工具开销:非采样时为零
  • FAQ:Nginx 正则性能
  • 前提条件与环境
  • 用 CPU 火焰图定位慢正则
  • 正则优化后的性能对比
  • 用 lua_regex_match_limit 限制 PCRE 回溯
  • 非回溯引擎:RE2 与 OpenResty Regex
  • Lua 内置模式作为正则替代
  • 在 Docker 和 Kubernetes 中追踪正则性能
  • 动态追踪工具的实现原理
  • 工具开销:非采样时为零
  • FAQ:Nginx 正则性能

动态追踪技术漫谈

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

在微软 Azure 云上安装自主部署版 OpenResty XRay

  • 创建订阅和资源组
  • 创建 Azure Kubernetes 服务
  • 准备环境变量
  • 通过命令行登录 Azure
  • 为 Kubernetes 创建 namespace 和 secret
  • 创建 Azure Disk
  • 更新持久化卷的配置文件
  • 更新 kubernetes 的配置文件
  • 创建持久化卷
  • 部署 Kubernetes 服务
  • 配置应用网关
  • 创建订阅和资源组
  • 创建 Azure Kubernetes 服务
  • 准备环境变量
  • 通过命令行登录 Azure
  • 为 Kubernetes 创建 namespace 和 secret
  • 创建 Azure Disk
  • 更新持久化卷的配置文件
  • 更新 kubernetes 的配置文件
  • 创建持久化卷
  • 部署 Kubernetes 服务
  • 配置应用网关

定位 Go 应用 CPU 最热的代码路径:Prometheus 高 CPU 实例分析(OpenResty XRay)

  • 问题:高 CPU 使用率
  • 使用 OpenResty XRay 的引导式分析功能定位 CPU 最热的 Go 代码路径
  • 全自动分析与报告
  • 问题:高 CPU 使用率
  • 使用 OpenResty XRay 的引导式分析功能定位 CPU 最热的 Go 代码路径
  • 全自动分析与报告

Go 服务 CPU 使用率异常低:对运行中进程做 off-CPU 分析定位阻塞根因

  • 症状:请求涌入,Go 服务 CPU 使用率却上不去
  • 用 OpenResty XRay 对运行中的 Go 进程做 off-CPU 分析
  • 根因:一行阻塞的 shell 命令调用
  • 全自动分析与日报、周报
  • 症状:请求涌入,Go 服务 CPU 使用率却上不去
  • 用 OpenResty XRay 对运行中的 Go 进程做 off-CPU 分析
  • 根因:一行阻塞的 shell 命令调用
  • 全自动分析与日报、周报

Django 内存分析:逐个对象剖析运行中应用的内存占用(使用 OpenResty XRay)

  • 用 ps 找出内存占用高的 Django 进程
  • 用引导式分析剖析 Django 应用的内存使用
  • 读懂火焰图:哪个 Python 模块占用内存最多
  • 用 Insights 自动监控 Django 内存使用
  • 关于 OpenResty XRay
  • 用 ps 找出内存占用高的 Django 进程
  • 用引导式分析剖析 Django 应用的内存使用
  • 读懂火焰图:哪个 Python 模块占用内存最多
  • 用 Insights 自动监控 Django 内存使用
  • 关于 OpenResty XRay

Python 内存分析器:无需改代码定位最占内存的对象

  • 找出哪个 Python 进程最占内存
  • 用引导式分析剖析 Python 内存:定位最大的对象及其所属模块
  • 用定时报告自动监控 Python 内存占用
  • 关于 OpenResty XRay
  • 找出哪个 Python 进程最占内存
  • 用引导式分析剖析 Python 内存:定位最大的对象及其所属模块
  • 用定时报告自动监控 Python 内存占用
  • 关于 OpenResty XRay

Python 进程 CPU 使用率只有 8%:off-CPU 分析定位阻塞的 subprocess.run 调用

  • 症状:请求涌入但 Python 进程 CPU 使用率上不去
  • 用 OpenResty XRay 的引导式分析定位阻塞的 Python 代码路径
  • Insights 页面中的全自动分析与报告
  • FAQ
  • 症状:请求涌入但 Python 进程 CPU 使用率上不去
  • 用 OpenResty XRay 的引导式分析定位阻塞的 Python 代码路径
  • Insights 页面中的全自动分析与报告
  • FAQ

无侵入式 Java 探针:生产环境无 Java Agent 捕获方法参数

  • 为什么无侵入式 Java 探针在生产环境很重要
  • 实战演示:在生产环境捕获 Java 方法参数
  • OpenResty XRay 与常见 Java Profiler 的差异
  • 常见问题
Photo by 章亦春
  • 为什么无侵入式 Java 探针在生产环境很重要
  • 实战演示:在生产环境捕获 Java 方法参数
  • OpenResty XRay 与常见 Java Profiler 的差异
  • 常见问题

Java Tomcat 响应慢:用单请求 PCAP 精准定位慢请求

  • 诊断 Tomcat 响应慢,精准捕获慢请求
  • 选择性抓包:按响应时间、状态码、路径过滤
  • 每个慢请求单独下载对应 PCAP 包
  • 区分服务端延迟与网络延迟
  • 支持 Spring Boot 内嵌 Tomcat 场景
Photo by 章亦春
  • 诊断 Tomcat 响应慢,精准捕获慢请求
  • 选择性抓包:按响应时间、状态码、路径过滤
  • 每个慢请求单独下载对应 PCAP 包
  • 区分服务端延迟与网络延迟
  • 支持 Spring Boot 内嵌 Tomcat 场景

Java 应用性能剖析:CPU、Off-CPU 与磁盘 I/O 分析(无 Safepoint 偏差)

  • 用火焰图剖析 Java CPU 热点
  • Off-CPU Java 性能分析:锁等待与阻塞诊断
  • Java 磁盘 I/O 剖析:追踪文件与套接字写入
  • 支持 OpenJDK 8/11/17/21 应用剖析
  • 自动化采样与专家分析
  • 性能影响与开销
  • 常见问题
Photo by 章亦春
  • 用火焰图剖析 Java CPU 热点
  • Off-CPU Java 性能分析:锁等待与阻塞诊断
  • Java 磁盘 I/O 剖析:追踪文件与套接字写入
  • 支持 OpenJDK 8/11/17/21 应用剖析
  • 自动化采样与专家分析
  • 性能影响与开销
  • 常见问题

Perl 进程 CPU 使用率只有 13%:off-CPU 火焰图定位阻塞的 HTTP 调用

  • 症状:请求涌入但 Perl 进程 CPU 使用率上不去
  • 用 OpenResty XRay 的 off-CPU 火焰图定位阻塞的 Perl 代码路径
  • Insights 页面中的全自动分析与报告
  • FAQ
  • 症状:请求涌入但 Perl 进程 CPU 使用率上不去
  • 用 OpenResty XRay 的 off-CPU 火焰图定位阻塞的 Perl 代码路径
  • Insights 页面中的全自动分析与报告
  • FAQ

线上定位 Perl 进程中最大的内存对象

  • 症状:top 里某个 Perl 进程内存占用过高
  • 用 OpenResty XRay 引导式分析定位最大的 Perl 对象
  • 把最大的对象追溯回源码文件
  • 用 Insights 报告自动监控 Perl 进程内存
  • 常见问题(FAQ)
  • 关于 OpenResty XRay
  • 症状:top 里某个 Perl 进程内存占用过高
  • 用 OpenResty XRay 引导式分析定位最大的 Perl 对象
  • 把最大的对象追溯回源码文件
  • 用 Insights 报告自动监控 Perl 进程内存
  • 常见问题(FAQ)
  • 关于 OpenResty XRay

Rust 进程硬盘 I/O 高的原因定位方法

  • 定位硬盘 I/O 高的 Rust 进程
  • 使用火焰图追踪 Rust 磁盘写入热点代码路径
  • 自动磁盘 I/O 分析报告
  • 常见问题
  • 定位硬盘 I/O 高的 Rust 进程
  • 使用火焰图追踪 Rust 磁盘写入热点代码路径
  • 自动磁盘 I/O 分析报告
  • 常见问题

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

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

Erlang 高 CPU 使用率:通过火焰图追踪 PCRE 正则瓶颈

  • 观察 Erlang 进程 CPU 使用率超过 200%
  • 使用 OpenResty XRay 分析 Erlang CPU 使用率
  • C 语言级别分析:erts_pcre_exec 与 PCRE 回溯
  • PCRE 正则回溯在 BEAM VM 中为何代价高昂
  • 自动监控与报告
  • 常见问题:Erlang 高 CPU 使用率
  • 观察 Erlang 进程 CPU 使用率超过 200%
  • 使用 OpenResty XRay 分析 Erlang CPU 使用率
  • C 语言级别分析:erts_pcre_exec 与 PCRE 回溯
  • PCRE 正则回溯在 BEAM VM 中为何代价高昂
  • 自动监控与报告
  • 常见问题:Erlang 高 CPU 使用率

Nginx 报 No debugging symbols found?用 OpenResty XRay 自动重建调试符号

  • 确认 Nginx 被 strip、调试符号缺失
  • 自动重建缺失的 Nginx 调试符号——无需重新编译
  • 持续分析:每日与每周 Insights 报告
  • 常见问题:nginx-dbg、重新编译与分析 strip 过的二进制
  • 确认 Nginx 被 strip、调试符号缺失
  • 自动重建缺失的 Nginx 调试符号——无需重新编译
  • 持续分析:每日与每周 Insights 报告
  • 常见问题:nginx-dbg、重新编译与分析 strip 过的二进制

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

  • 定位崩溃的 OpenResty/Nginx worker 进程产生的 core dump 文件
  • 在 OpenResty XRay 中启动自动(引导式)core dump 分析
  • 解读崩溃时的信号、CPU 寄存器和 C 调用栈
  • 沿着 Lua 调用栈定位到精确的崩溃代码行
  • 针对线上 core dump 的自动 Insights 报告
  • 定位崩溃的 OpenResty/Nginx worker 进程产生的 core dump 文件
  • 在 OpenResty XRay 中启动自动(引导式)core dump 分析
  • 解读崩溃时的信号、CPU 寄存器和 C 调用栈
  • 沿着 Lua 调用栈定位到精确的崩溃代码行
  • 针对线上 core dump 的自动 Insights 报告

Envoy CPU 性能分析:用火焰图定位 C++ 热路径

  • 场景:Envoy 进程 CPU 占用超 90%
  • 用 C++ 火焰图分析 Envoy CPU 消耗
  • 持续 CPU 监控与自动化报告
  • 关于 OpenResty XRay
  • FAQ:Envoy CPU 性能分析
  • 场景:Envoy 进程 CPU 占用超 90%
  • 用 C++ 火焰图分析 Envoy CPU 消耗
  • 持续 CPU 监控与自动化报告
  • 关于 OpenResty XRay
  • FAQ:Envoy CPU 性能分析

llama.cpp CPU 占用分析:400% 的 CPU 追踪到 ggml 热点函数

  • 运行 llama.cpp 并观察到 400% 的 CPU 使用率
  • 使用 OpenResty XRay 剖析 llama.cpp 的 CPU 占用
  • 分析结果:最热的 C++ 代码路径
  • 关于 OpenResty XRay
  • 运行 llama.cpp 并观察到 400% 的 CPU 使用率
  • 使用 OpenResty XRay 剖析 llama.cpp 的 CPU 占用
  • 分析结果:最热的 C++ 代码路径
  • 关于 OpenResty XRay

Ylang 生产实战:容器追踪、栈回溯与 Core Dump 分析(第四集,全四集)

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

Ylang:正则表达式、完整控制流与透明调试符号处理(第三集,全四集)

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

在线上 Kong 服务进程中实时统计 CPU 和内存用量最高的插件(使用 OpenResty XRay)

  • 服务器进程中所有 Kong 插件的 CPU 使用情况
  • 服务器进程中所有 Kong 插件的内存使用情况
  • 服务器的额外负担
  • 下一步是什么?
Photo by 章亦春
  • 服务器进程中所有 Kong 插件的 CPU 使用情况
  • 服务器进程中所有 Kong 插件的内存使用情况
  • 服务器的额外负担
  • 下一步是什么?

Ylang: 适用于 eBPF、SystemTap、GDB 等框架的动态追踪语言(第一集,全四集)

  • 什么是动态追踪
  • 为什么命名为 “Y”
  • Ylang 入门
  • 动态追踪后端:eBPF+、Stap+、GDB 和 ODB
  • 为什么动态追踪需要一个统一的前端语言
  • Ylang 语法:真正兼容 C
  • 常见问题
Photo by 章亦春
  • 什么是动态追踪
  • 为什么命名为 “Y”
  • Ylang 入门
  • 动态追踪后端:eBPF+、Stap+、GDB 和 ODB
  • 为什么动态追踪需要一个统一的前端语言
  • Ylang 语法:真正兼容 C
  • 常见问题

定位泄漏的 Lua table:registry / _LOADED(package.loaded)引用路径 · OpenResty XRay

  • LuaJIT 如何管理内存
  • OpenResty XRay 的命令行工具
  • 一个 Lua table 泄漏示例
  • 按 LuaJIT GC 对象类型拆解内存
  • 解读 lj-gco-ref 火焰图:registry、_LOADED、package.loaded
  • 全自动 Lua 内存泄漏分析
  • LuaJIT 如何管理内存
  • OpenResty XRay 的命令行工具
  • 一个 Lua table 泄漏示例
  • 按 LuaJIT GC 对象类型拆解内存
  • 解读 lj-gco-ref 火焰图:registry、_LOADED、package.loaded
  • 全自动 Lua 内存泄漏分析

使用 YSQL 语言对 Nginx 进程进行实时请求计数

  • 如何安装 run-ysql 工具
  • 统计实时总请求数
  • 筛选出特定的请求
  • 在 Web 控制台中使用 YSQL
  • 真正的非侵入式追踪
Photo by 章亦春
  • 如何安装 run-ysql 工具
  • 统计实时总请求数
  • 筛选出特定的请求
  • 在 Web 控制台中使用 YSQL
  • 真正的非侵入式追踪

分析 OpenResty 或 Nginx 中最耗 CPU 的请求

  • 系统环境
  • 最耗 CPU 的请求主机名
  • 最耗 CPU 的请求 URI
  • 深入挖掘
  • 直接在 Web 控制台中运行
  • 追踪容器内的应用
  • 工具的实现方式
  • 工具的开销
Photo by Yichun Zhang
  • 系统环境
  • 最耗 CPU 的请求主机名
  • 最耗 CPU 的请求 URI
  • 深入挖掘
  • 直接在 Web 控制台中运行
  • 追踪容器内的应用
  • 工具的实现方式
  • 工具的开销

Lua CPU 火焰图实战:在线定位 LuaJIT 性能瓶颈

  • 什么是 Lua CPU 火焰图
  • 分析简单 LuaJIT 应用:验证火焰图精度
  • 生产环境实战:复杂 LuaJIT 应用
  • 采样开销
  • 生产安全性:不修改目标进程
  • 兼容性
  • 常见问题
Photo by Guido Jansen
  • 什么是 Lua CPU 火焰图
  • 分析简单 LuaJIT 应用:验证火焰图精度
  • 生产环境实战:复杂 LuaJIT 应用
  • 采样开销
  • 生产安全性:不修改目标进程
  • 兼容性
  • 常见问题

LuaJIT GC64 模式

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

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

成功发送消息!

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