为什么堆栈跟踪 APM 不足以进行完整的 Web 应用程序监视

堆栈和图层

可能真的说,如果你问一个普通用户什么造就了一个伟大的Web应用程序,他们可能会说”速度”。 但是,速度可能是元素大量减少中最不重要的方面。 应用程序开发和程序中的呈现等因素可能高于该列表。 是什么造就了一个性能出色的应用程序? 当出现问题时,你怎么知道的? 这些是堆栈跟踪监视和综合 Web 应用程序性能监视要回答的一些问题。 两者都有其优点和缺点,但本文将阐述是什么使更好的工具,以确保用户体验放在确定什么使一个伟大的Web应用程序的最前沿。

 

什么是堆栈跟踪?

堆栈跟踪是一种有用的调查工具。 它展示了”调用堆栈”,这是一堆功能/方法,在编译器抛出一个未知的特殊情况时(或在物理上生成堆栈跟踪的那一刻)时,这些功能/方法被调用到程序执行的当前状态。

这是特别有价值的,因为它不只是给你的错误发生的地方,它也可以让您深入了解程序是如何在程序的那个点结束。 其目的是提供在程序崩溃之前调用的方法,并记下应用程序正在经历的方法调用。 它帮助我们了解某物是如何变得这样,并展示了纠正错误的机会。 如果没有这种跟踪,这些操作将下落不明,任何错误都将变为静音。 该服务后来成为醒目地称为”黑匣子”。

 

什么是异常?

运行时条件用于通知我们遇到了错误,这是一个例外。 众所周知的模型是空指针异常索引出界异常算术异常。 每一个都是当你试图完成一些从字面上无法想象的事情(由计算机造成的)时造成的。 例如,一旦尝试引用无效条款,将抛出“空指针异常

 

Exception

 

上图描绘了堆栈跟踪。 我们开始开始”的磨合开始”在…”,我们可以判断错误发生的地方。我们尝试发现的方法调用的第一次遇到,这可能是我们应用程序的一部分,或者应用程序中使用了模块的一部分。对于这种情况,罪犯是”在 com.example.myproject.Book.getTitle(书.java:16)。” 我们可以因此打开 书.java,看看第16行。 这是一个基本情况,即当我们回溯堆栈时会发生什么。

同样,它也可以由如下一系列豁免带来:

 

Exemptions

 

本案的罪魁祸首是它开始于”由:java.lang”。com.example.my 项目上提供空指针例外预订.getId(.java:22)com.example.my 项目。作者.getBookIds(作者.java:36)

这一个与众不同的是”“条款。一时豁免将有各种”“地区。在某些情况下,您需要搜索出”基础驱动程序”,这可能是回溯中许多此类段之一。

 

第三方代码如何影响堆栈回溯

当前应用程序通常以交叉方式触发许多函数调用层(即调用其他函数或在某些情况下本身)。 为了使问题越来越混乱,我们定期有许多层的编程代码添加到调用堆栈中。 来自运行时或导入库的代码可能会降低调用堆栈的纯度,从而在修复异常时难以重新讨论或分离。 现在,您可能会想,”此输出块如何帮助我识别 Bug?”

 

调用堆栈和跟踪如何帮助执行

在此之前,我们主要谈论的是代码错误,而不是执行。 当 Bug 出现时,我们需要隔离包含其外观的条件,并重播这些条件以重现 Bug。 在性能方面,我们也需要一种方法来完成上述技术。 我们必须模拟当前框架条件,重新考虑我们当前的情况,进行必要的更改,并重播当前框架条件的预览以分析结果。

执行调优首先发现、估计和升级,以首先缓解最大的瓶颈。 作为任何性能调优模块的生产者,我们必须非常了解测量、更新和优化的过程。 此时,调用堆栈可以帮助我们检查此过程。 为了收集信息,我们基本上使用常规分析作为我们的做法。 在配置文件发生时,它会偶尔描述调用堆栈的当前状况。 当我们有信息快照时,我们已准备好查看一遍又一遍地显示的代码块,这样,回溯可能会带来性能增强的可能性。 但要完全确定,我们必须了解我们进行这些系统框架测量的过程。 但是,这里有一个问题。 堆栈跟踪有其自身的限制。 尖端应用程序涉及许多计算,因此,许多调用堆栈。 那么,我们如何明智地过滤和理解大量的信息呢?

 

堆栈跟踪限制

偶尔,您无法确保不会收到错误。 例如,在程序中使用 Web 驱动应用程序的可能性时,无法阻止 PC 失去其 Web 关联(例如,无法阻止客户端断开 PC 的系统网络)。 现在的情况是系统库对我们进行豁免。 在一个完美的世界,这是工程师”抓住”特殊情况和管理它。 这意味着,在具有网络关联的模型中,您应该尝试恢复关联或通知客户端。 工程师在获得豁免时必须记住,他们抓住了他们期望的案子,因此他们不应该利用诸如”例外e”等广泛的公告来获得所有豁免。 这被证明是堆栈重跟踪的一个关键因素。 它没有抓住必须以某种方式处理的特殊情况,而是以完全不同的方式得到照顾。

在监视应用程序方面,堆栈跟踪工具并非一点万无一失。 内容难以编纂,难以理解和分解,容易出现详尽的错误。

 

合成监测

与堆栈跟踪工具不同,合成监视的工作原理是向应用程序创建模拟用户交换/事务,模拟普通用户或客户端如何遍历应用程序。 它可以应用于防火墙内部、服务器空间内,以确保所有计算机都正常运行,或在防火墙外部从全球角度提供有关可访问性和执行的数据。 这些服务器调用和测试内容通过以预定义的频率运行(如每 5 分钟或每 3 小时一次)来监视”仪器”。

这种监视对您的业务至关重要,因为它允许您区分问题并调查您的网站或应用程序是否需要在最终客户端真正受到影响之前进行调整。 由于这种检查不依赖于真实的 Web 流量,因此可以随时从任何位置监视 Web 应用程序或页面,并且可以在应用程序投入生产之前设置监视代理。 这就是为什么许多开发人员倾向于综合监控,因为它提供了 24/7 的可见性,并提供了组织在客户绊倒错误之前修复错误的杠杆。

 

是否需要综合监控?

对此问题最不复杂的回答是,您需要帮助来保证应用程序或站点已做好操作准备。 但从技术上要指出,对这项调查的真正反应远不止于此。 质量监控代理不会简单地 ping 您的网站以确保其可用。 质量管理将检查区域名称框架记录、传输速度、数据库以及系统可用性、CPU 负载、驱动器存储、事件、RAM 和其他基本因素。 虽然及时和反应时间无疑是需要量化的重要事项,但应用程序或页面的可靠性和一致性具有额外的重要和度量,必须设置为筛选这些内容。

此外,当您希望提供一流的体验时,只需从防火墙内检查 API 和应用程序的可访问性和发布时间是不够的。 用户可以从世界任何地方(从不同的设备、浏览器和网络)访问您的应用程序。 通过综合监控,您可以模仿这些业务程序或客户交换,例如,从全球不同地点登录、搜索项目、填写表单/调查、向购物车添加商品、注销流程等,并查看其绩效。 然后,您将能够分析交换中地理位置和步骤之间的执行详细信息,并开始定义您的改进计划。

 

堆栈跟踪和综合监测:结论

综合监控采用外部主动方法,在客户发现问题之前提供帮助。 如果使用了正确的过程,综合监控可以为您提供最终用户和客户端的相同视图,更不用说他们的表现,以及客户是否会对体验感到满意。 堆栈跟踪的情况并非如此。 毫无疑问,这是一个非常可靠和称职的分析协议,但它只能以前面的方式跟踪失败事件的步骤。 这让我们非常坚定地认识到,堆栈跟踪与合成监视相结合,可以帮助将完整的堆栈连接在一起,并提供强大的性能监视解决方案。尝试完整的Dotcom-Monitor平台免费30天

 

Facebook
Twitter
LinkedIn
电子邮件
打印