OpenResty XRay 是一款基于动态追踪技术的非侵入式诊断系统。与传统的 APM Agent 不同,它默认不会对目标进程进行任何代码注入或修改。只有在用户发起分析时,OpenResty XRay Agent 才会按需、低频地采集所需数据。这种按需采样的设计哲学,从根本上保证了其在生产环境中的极低开销和高安全性。

在生产环境中对实时运行的 Perl 应用进行性能分析,最核心的顾虑是分析工具本身带来的性能损耗。本文将通过实测数据,精确展示 OpenResty XRay 的 Agent 在生产模式下对一个 Perl 应用进行动态追踪分析时,对系统 CPU、内存、负载,以及应用吞吐量和请求延时的真实影响。

数据显示,即使在分析器全力运行期间,对应用最大吞吐量的影响也低于 0.3%,对平均请求延时的影响仅为 20 微秒。同时,OpenResty XRay 的 Agent 在未执行分析任务时,性能开销严格为零。

测试环境与性能基线

为建立对比基准,在分析器运行前,我们通过 top 命令捕获了系统性能基线。如下图所示,目标 perl 进程的 CPU 占用约为 49%,整个系统过去一分钟的平均负载值为 0.87,当前 CPU 空闲率约为 87%,可用内存约 2730 MB

perl 进程

分析期间:系统级资源变化实录

为模拟真实诊断场景,我们通过 OpenResty XRay 控制台,在生产模式下,针对该 Perl 进程发起了一次持续 300 秒(5分钟)的“High CPU usage”场景分析。

选择生产模式

选择“生产模式”至关重要,因为它专为线上环境设计,通过低频采样等优化,旨在将性能影响降至最低。

下图展示了分析任务执行中的状态。

分析进行中,持续 300 秒

在分析器运行期间,我们观察到系统各项指标的细微变化:

  • 目标进程 CPU 占用率: 上升至 ~50%,相比基线增加约 1 个百分点。
  • 整个系统过去一分钟的平均负载值: 上升至 1.04,相比之前的负载值 0.87 有小幅增加。
  • CPU 空闲率: 下降至 ~85%,与基线 87% 相差无几。
  • 系统可用内存: 下降至 ~2725 MB,减少约 5 MB,属于正常波动范围。

分析期间可用内存 2725 MB

结论是,OpenResty XRay 分析器在采样期间对系统级资源(CPU、内存、负载)的影响是存在的,但幅度轻微,并未对系统稳定性构成压力。

关键指标:吞吐量与延时影响的精确测量

对于线上服务而言,吞吐量和延时是衡量性能的生命线。我们对这两项核心指标进行了三轮对比测试。

1. 最大吞吐量

我们使用压测工具,测量了不同状态下服务器进程的最大吞吐量。

  • 无 Agent 状态: 1024 req/s

无 Agent 时最大吞吐量 1024 req/s

  • 当 Agent 已安装但未运行分析器时: 1024 req/s (无变化)

Agent 静默时吞吐量不变

  • 分析器运行状态: 1021 req/s

分析器运行时吞吐量 1021 req/s

结果显示,当分析器正在采样时,最大吞吐量约为每秒 1021 个请求。仅比不采样时低 0.3%。

2. 平均请求延时

我们测量了高并发下客户端感受到的平均请求延时。

  • 无 Agent 状态: 1250 微秒

无 Agent 时平均延时 1250 μs

  • 当 Agent 已安装但未运行分析器时: 1250 微秒 (无变化)

Agent 静默时延时不变

  • 分析器运行状态: 1270 微秒

分析器运行时延时 1270 μs

结果显示,分析器的运行使平均请求延时仅增加了 20 微秒

总结

通过对系统资源、应用吞吐量和请求延时的全面测量,可以得出结论:OpenResty XRay 的动态追踪架构,使其在对生产环境 Perl 应用进行实时诊断时,性能开销可量化、可预期,且对核心业务指标的影响极小。这证明了它是一款可以安全、放心地在生产环境中常态化使用的性能分析工具。

InsightsDashboard 页面进行自动分析的开销也同样极低。

Insights 和 Dashboard 页面

关于 OpenResty XRay

OpenResty XRay 是一个动态追踪产品,它可以自动分析运行中的应用,以解决性能问题、行为问题和安全漏洞,并提供可行的建议。在底层实现上,OpenResty XRay 由我们的 Y 语言驱动,可以在不同环境下支持多种不同的运行时,如 Stap+、eBPF+、GDB 和 ODB。

关于作者

章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。

章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,并编写过 60 多个开源软件库。

关注我们

如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

我们提供了英文版原文和中译版(本文)。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!