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

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

OpenResty XRay 的 Agent 会如何影响 Perl 编写的目标应用?我们会在这个视频里提供答案。

perlcover.png

首先,运行 top 命令查看进程列表。

Screenshot

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

Screenshot

可以看到这个名为 perl 的进程。

Screenshot

它的 CPU 利用率为 49%。

Screenshot

整个系统过去一分钟的平均负载值为 0.87。

Screenshot

当前 CPU 空闲率约为 87%。

Screenshot

当前可用内存约为 2730 MB。

Screenshot

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

Screenshot

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

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

Screenshot

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

Screenshot

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

Screenshot

前往 “Guided Analysis“ 页面。

Screenshot

选择 “High CPU usage”。

Screenshot

点击 “Next“。

Screenshot

选择我们之前看到的 Perl 应用。

Screenshot

选择我们之前在 top 指令中看到过的目标进程。

Screenshot

开始分析。

Screenshot

系统将持续多轮分析。

Screenshot

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

Screenshot

让我们回到之前的终端窗口。

Screenshot

我们可以看到当前 CPU 利用率约为 50%,这只比之前的数值高了 1%。因此,对于目标进程的 CPU 利用率来说没有明显的影响。

Screenshot

整个系统过去一分钟的平均负载值为 1.04,比之前的负载值 0.87 略高了一点。

Screenshot

CPU 空闲率约为 85%,与之前的 87% 相差无几。

Screenshot

当前可用内存大约为 2725 MB,相较于之前下降了 5 MB,但仍然在正常波动范围内。

Screenshot

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

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

Screenshot

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

Screenshot

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

Screenshot

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

Screenshot

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

Screenshot

我们再来看一下采样过程中对请求延时的影响。以下是我们对比数据后的发现。

Screenshot

没有安装 Agent 时,平均请求延时为 1250 微秒。

Screenshot

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

Screenshot

当分析器正在运行时,请求延时变为 1270 微秒。仅仅增加了 20 微秒。

Screenshot

因此,这证明了运行分析器对请求延时的影响也极小。

Screenshot

让我们返回到 Web 控制台。

Screenshot

在 Insights 和 Dashboard 页面进行自动分析的开销也极低,和前面看到的是类似的。

Screenshot

如果你喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道B 站频道。谢谢!

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

我们的微信公众号

翻译

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