使用事务跟踪检测性能瓶颈

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

当您构建监控解决方案或评估现有解决方案时,您会寻找什么?大概是这四个核心功能方面:

  1. 指标的收集和显示
  2. 基于指标值和异常的警报
  3. 收集和显示服务器和应用程序日志以及其他类型的事件
  4. 基于从日志中提取的日志模式和指标发出警报

但实际上还有一个更有趣的功能值得关注:

分布式事务跟踪

这在微服务架构中尤其有用,在微服务架构中,复杂的应用程序由多个组件和服务组成,在服务用户请求的同时通过网络相互通信。事实上,451 Research 基础设施软件高级分析师 Dennis Callaghan 指出:

微服务解决了很多挑战,这就是为什么它们正在成为应用程序内部和应用程序之间的标准架构。我们预计今年企业将加速采用微服务。但这些企业需要两件事才能有效监控微服务架构。一是 能够在这些日益复杂和分布式的环境中查看应用程序和事务行为并跟踪事务 。另一个是 APM 经济模型,它有意义并反映了监视更多较小实例的需要

SPM 一直拥有“有意义的 APM 经济模型,并反映了监控更多较小实例的需求”,这基本上是计量模型,您只需为使用的资源付费。这篇文章是关于 Dennis Callaghan 声明中强调的另一个关键部分:“能够在这些日益复杂和分布式的环境中查看应用程序和事务行为并跟踪事务”。

什么是分布式事务跟踪?

[注意:如果您知道什么是事务跟踪以及有什么好处,您可以直接跳到这篇文章的底部,看看如何启用它。]

当我们在这种情况下说事务时,我们指的不是数据库事务。 在应用程序性能监控的上下文中,事务跟踪是指端到端的请求代码执行,可以跨越多个运行的应用程序和多个服务器 。例如,当您在 Amazon.com 上购物并在那里搜索产品时,您的搜索操作会启动一个请求事务,该事务可以通过 Amazon.com 应用程序和服务器基础架构的各个层进行跟踪,一直追溯到数据库并返回。这也是 SPM 的事务跟踪可以为您自己的应用程序和服务器做的事情。

事务跟踪适合的地方

让我们从一个简单的图表开始。小“SPM 代理”框是负责跟踪所有事务并捕获有关它们的信息的嵌入式代理。橙色的所有内容和所有红色箭头都将由 SPM 的代理进行跟踪,即使事务通过网络并从一个服务器跳到另一个服务器——因此 分布式 事务跟踪。 现在,让我们快速看一下稍微复杂一点的图表: 在这里,我们还看到了一个 外部 HTTP 服务 (例如第三方 REST API),我们的应用程序通过 HTTP 与之通信。这也被捕获,连同所有橙色组件和红色箭头。我们还可以看到 Service1 有多个内部类和方法。 SPM 也在您的代码深处跟踪执行情况,因此它可以告诉您哪些类中的哪些方法运行缓慢

事务跟踪如何/为何有用?

简而言之,事务跟踪非常适合:

  • 查明应用程序性能不佳的根本原因 ,这样您就可以解决它们,让您的用户满意,让您的父母感到自豪!
  • 找到您的应用程序中最慢的部分 ,这样您就可以加快故障排除并从您的开发时间中获得最大回报

看看下面的图表,您就会产生共鸣。它显示了我们在生产中部署的一个真实组件的响应时间。您可以看到响应时间在某一时刻是如何改进的,对吗?我们启用事务跟踪来查找并修复我们自己代码中的瓶颈。简而言之, 我们将其中一个组件的第 99 个百分位响应时间从 1-3 秒减少到大约 0.15-0.30 秒。这大约快了 10 倍!

在哪里以及如何启用事务跟踪

如果您一直在使用 SPM, 您可能会使用它的 集成 之一来监控您的后端基础设施——Apache Spark、Solr、Storm、Elasticsearch、Hadoop、Cassandra、Kafka,诸如此类的后端。 从上图中可以看出,事务跟踪从更靠近前端的地方开始——在运行与后端和远程服务通信的客户端应用程序的层中,以及 Solr、Elasticsearch、Cassandra、HBase、MySQL 等数据存储,和数据处理框架,如 Apache Spark 或 Kafka,甚至 Hadoop 。换句话说,要获得事务跟踪的全部好处,您需要执行以下操作:

就是这样。启用事务跟踪后,在 SPM 中的新事务选项卡下查看:

此外,作为 SPM 中事务跟踪的一个很好的副作用,您还将获得:

  • 您应用的请求 吞吐量 、响应 延迟 以及 错误率和异常率
  • AppMap ,其中基础设施中的各种组件如何相互通信

在接下来的几天里,我们将发布有关 SPM 中事务跟踪的更多信息,包括操作方法、源自事务跟踪的附加功能等。同时,以下是要点:

  • 事务跟踪 不需要 您修改任何源代码——检测是在 JVM 字节码级别自动完成的
  • 事务跟踪目前可用于在 JVM 内运行的 Java 和 Scala 应用程序
  • 事务跟踪通过 UI 左侧的新“事务”报告(选项卡)公开。也就是说,要理解的关键一点是,事务跟踪实际上是用于查找 应用程序中的瓶颈以及它们如何与后端服务、框架和外部服务通信的方式 ,而不是用于查找应用程序连接到的后端应用程序中的瓶颈。进一步参见上图。
  • 我们支持深入了解 SPM 事务跟踪 文档中列出的特定技术
  • 您需要 获取最新版本的 SPM 客户端 (它也有一些 优化 !)
  • 您需要在 嵌入式 (又名 javaagent)模式下使用 SPM 监视器,而不是 独立的
  • 要将事务跟踪添加到您自己的自定义应用程序,您可以轻松创建 自定义切入点

尚未使用 SPM,但想跟踪您的应用程序?只需 在这里注册 。它没有伤害,不需要签署你的生活或孩子,没有承诺,你可以把你的信用卡留在你的钱包里。您可以免费使用新的 SPM 应用程序 30 天。您可以邀请您的同事,这样您就可以协作监控您的应用程序并找到那些讨厌的瓶颈!哦, 如果您是一家年轻的初创公司、小型或非营利组织或教育机构,请向我们索取折扣 (请参阅 特价 )!