帮助手册

Java 中的循环检测支持

Site24x7 的 APM Insight Java 代理支持循环检测功能。该功能可帮助您识别应用代码中可能包含重复数据库查询或耗时过长的循环,从而确保代码块更高效地执行。

了解循环及监控的必要性

循环是编程的基本组成部分,使开发人员能够反复执行一组指令,直到满足特定条件为止。这一功能对于执行重复性任务、处理数据集合以及实现各种算法至关重要。

然而,尽管循环很有用,但如果实现不当,也会引发性能问题。当循环执行次数过多或包含低效逻辑时,会消耗大量处理时间和资源,导致用户体验下降。编写不当的循环可能导致应用程序变慢、加载时间增加,甚至在某些情况下引发崩溃。

为确保最佳性能,开发人员必须持续监控并识别代码中的低效循环。通过主动检测这些代码块,开发人员可以在应用程序扩展和演进过程中对其进行优化并采用更佳实践。

APM Insight Java 代理中的循环检测如何提供帮助

APM Insight Java 代理中的循环检测功能可捕获应用代码中的循环并识别重复调用。该功能对于发现同步或异步代码中不易察觉的低效问题尤为有价值。通过检测并解决这些隐藏的性能瓶颈,开发人员可以提升应用性能,为用户提供更流畅的体验。

Note

默认情况下,循环检测功能处于禁用状态,但您可以启用它。

在界面中查看循环检测结果

  1. 登录 Site24x7 Web 客户端。
  2. 转到 APM > 您的 Java 应用程序。
  3. 单击 Traces 选项卡,然后选择所需的追踪记录。
  4. 选择 Trace Details 选项卡。
  5. 查找标记为 Loop Detected 的 span。

高亮显示的 span 部分展示了代理检测到嵌套循环实现的情况:外层循环(位于 CatalogBean.viewProduct)执行两次,内层循环(位于 Product.sleepTime)执行两次,共计迭代四次。

如何启用/禁用循环检测

  1. 转到 APM > APM Insight > 您的 Java 应用程序。
  2. 单击应用程序/实例下拉菜单旁边的汉堡图标Hamburger icon),然后选择编辑
  3. 编辑代理配置文件页面中,您可以启用或禁用循环检测

循环是如何被捕获的?

Note

并非所有循环都会被捕获。 

循环检测专门针对用户包中的方法。满足以下任一阈值条件的循环将被捕获:

  • 循环内包含至少一次外部调用。
  • 循环的总执行时间超过 10ms。

已捕获的指标

当检测到循环时,以下指标将被捕获并显示在 Trace Details 选项卡中:

指标 描述
Duration 循环执行所花费的总时间
Origin of the loop 包含循环的类和方法名称
Iteration count 循环的迭代次数
Consolidated view of duplicate calls 在循环内同一位置跨迭代发生的外部调用将被合并,以单个 span 的形式显示

本文档对您有帮助吗?

您愿意帮助我们改进文档吗?请告诉我们哪些方面可以做得更好。


很抱歉本文档未能让您满意。我们希望了解可以从哪些方面改进您的体验。


感谢您抽出时间分享反馈。我们将利用您的反馈来改进在线帮助资源。

短链接已复制!