为什么要在你的工作流程中整合持续分析?

108 阅读5分钟

你已经写好了精致的代码,并在开发中发挥作用。现在是时候把它带入生产,供不同的人使用了。这时,成千上万的问题开始涌入你的脑海。如果网络应用程序在生产过程中出现故障怎么办?我怎么知道我的网络应用程序是否处于峰值性能?有没有一种技术可以让我轻松了解生产性能?有没有一种方法可以让我的团队解决可能导致真正生产问题的缺陷?

本文将回答这些问题,并教你一个能很好地将应用程序转移到生产的过程。

什么是持续剖析?

持续剖析是在任何时间、任何规模上优化生产中的代码性能的过程。它涉及到从生产环境中持续收集性能数据,并提供给开发人员和运营团队,以便进行快速和深入的分析。

这是一个粗略的草图,显示了持续剖析的反馈。

为什么要使用持续剖析?

你需要一个持续的剖析架构,这样程序员就可以得到关于他们代码性能的线级反馈。当我在这里说性能时,我的意思是你会看到一些有限的感兴趣的资源的消耗率。资源可以是壁钟时间、内存、CPU时间、磁盘I/O等等。

如果这些资源被耗尽,就会导致系统内出现瓶颈。因此,如果你能识别并改进你的代码库中利用这些资源的部分,你将迅速从性能退步中恢复过来;降低成本;并改善可伸缩性、程序员的心理模型和用户体验。

即使你觉得你需要为每一种编码语言实现连续剖析器,但概念并没有太大不同。连续剖析器无预谋地、定期地获得剖析结果,以确保开销保持不明显。

剖析器提供了惊人的好处,它帮助像你这样的开发人员使用剖析报告廉价地自动解决性能问题,为你提供关于应用程序生产行为的重要数据。这些信息使你能够了解和分析对你来说是热点的代码的重要区域。

我们拥有的连续剖析器的类型

有两种主要的代码剖析器:采样剖析器和仪器剖析器。

1.采样剖析器: 也被称为统计剖析器,它们通过获取各种时间点的样本来估计应用程序中的 "花费时间 "分配。

2.仪表剖析器: 它们的工作方式是升级应用程序代码,并插入对函数的调用,计算出一个进程被调用的次数和在函数内花费的时间。与这种性能分析有关的开销通常很高,因为剖析器直接将仪器化注入到应用程序代码中。

你应该知道的连续剖析器

Gprofiler

Granulate的gProfiler是一个开源的连续剖析器,你可以用最小的努力无缝安装,而不需要修改代码:它是即插即用。对生产代码的可视性立即得到促进,而且gProfiler被配置为在后台持续工作。

因此,性能问题的分析是实时的,CPU的使用量最小。它还致力于优化应用程序的云使用,使其成为一个具有成本效益的解决方案。

它支持Python、Java、Go、Scala、Clojure和Kotlin应用程序等编程语言。

Datadog持续分析器

Datadog的连续剖析器可以轻松发现占用CPU或内存较多的代码行。它配备了运行在主机应用程序上的Datadog代理。它可以支持Python、Java和Go等不同编码语言编写的应用程序,但根据语言的不同,你得到的剖析信息类型也会不同。

例如,Java应用程序是唯一一个向你提供每个方法从文件读取和写入时间的剖析信息的应用程序。然而,在所有的编程语言中都可以获得每个函数在CPU中使用的时间。

亚马逊CodeGuru剖析器

亚马逊CodeGuru Profiler帮助程序员了解应用程序的行为运行时间,并找到代价高昂的代码行。您可以利用它来诊断性能方面的问题,如高延迟或低吞吐量,寻找机会来改善CPU和内存的使用。它可以帮助你削减成本。

因此,它可以在生产中不断运行,以发现性能问题,并提供由机器学习驱动的建议,以了解和优化代码应用中成本最高或资源密集的行。Amazon CodeGuru支持Java和Python应用程序。

Dynatrace代码分析器

Dynatrace代码分析器使用其专利的PurePath技术,基于跨越端到端交易的代码级别的跟踪。它提供了CPU和内存工具的分析,允许开发人员深入到方法层面来检测问题。它支持用PHP、Java、.NET、Node.js和Go制作的应用程序。

我们可以看到,连续剖析器对于应用程序的生产是非常不可或缺的,我希望这篇文章能够回答你关于连续剖析的许多问题。非常感谢您的阅读。