在本教程中,我们将展示 OpenResty XRay 在追踪 PHP 应用时对性能的实际影响。当 OpenResty XRay 对目标系统进行采样和分析时,我们将观察 CPU、内存、平均负载、流量吞吐量与请求延时等。OpenResty XRay 是基于我们自己的动态追踪技术的非侵入式诊断系统。它的性能开销极小,可以实时分析运行中的应用,帮助找出各种问题的根本原因。

应用性能在分析器运行前的表现

运行 top 命令查看进程列表。现在,OpenResty XRay 的 Agent 没有运行任何分析。因此,它对目标进程的性能影响严格为零。多亏了动态追踪技术。它绝不会对目标进程进行任何修改。

Screenshot

让我们看一下这个名为 php 的进程。

Screenshot

它的 CPU 利用率约为 50%。

Screenshot

过去一分钟的平均负载值为 0.31。

Screenshot

CPU 空闲率约为 85%。

Screenshot

当前可用内存约为 2433MB。

Screenshot

让我们运行 OpenResty XRay 来主动分析这个 PHP 进程。这样我们就可以看到它对目标的性能影响。

Screenshot

分析器运行时对性能的影响

浏览器中打开 OpenResty XRay 的 Web 控制台。

Screenshot

确保我们当前分析的是正确的机器。

Screenshot

生产模式用于分析线上的生产环境。它会尽量将对目标应用和服务器性能的影响降至最低。不过也这意味着分析时间可能会更长。

Screenshot

跳转到 “Guided Analysis” 页面。

Screenshot

选择 “High CPU usage”。

Screenshot

点击 “Next”。

Screenshot

选择 PHP 应用。

Screenshot

选择消耗 51% CPU 资源的进程。也就是我们之前在 top 中看到的。

Screenshot

开始分析。

Screenshot

系统将持续执行多轮分析。

Screenshot

它将持续采样 300 秒,也就是 5 分钟。

Screenshot

让我们回到终端窗口。可以看到当前的 CPU 利用率为 53%,只增加了 3% 左右。

Screenshot

过去一分钟的平均负载值现在是 0.41,比之前的 0.31 增加了 0.1。

Screenshot

CPU 空闲率增加了 1%,达到 85.9%。

Screenshot

当前可用内存仍然约为 2433MB 左右。和之前相比没有什么明显的变化。

Screenshot

实际测算分析器运行对最大吞吐量与请求延时的影响

我们测量了不同情况下服务器的最大吞吐量,以下是我们的发现。

Screenshot

没有安装 OpenResty XRay 的 Agent 时,最大吞吐量约为每秒 369 个请求。

Screenshot

当 Agent 已安装但未运行分析器时,最大吞吐量保持不变。

Screenshot

当分析器正在采样时,最大吞吐量约为 355 RPS,仅比不进行采样时低 3.7%。

可以看到运行分析器,对目标进程的最大吞吐量影响极小。

Screenshot

这个性能压测显示了采样过程中,对请求延时的影响。以下是我们对比数据后的发现。

Screenshot

没有安装 OpenResty XRay 的 Agent 时,平均请求延时为 5.36 毫秒。

Screenshot

当 Agent 已安装但分析器未运行时,平均请求延时没有变化。

Screenshot

当分析器正在运行时,请求延时变为 5.58 毫秒。仅仅增加了 0.22 毫秒。

这证明了运行分析器对目标进程的请求延时影响也极小。

Screenshot

在 “Insights" 和 “Dashboard“ 页面进行自动分析的开销也是类似的小。

Screenshot

关于 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. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

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