【问题标题】:How to profile Akka applications?如何分析 Akka 应用程序?
【发布时间】:2013-07-21 01:17:54
【问题描述】:

我有一个小型 Akka 应用程序,它在它的参与者之间传递许多消息,每个参与者都会对它接收到的数据进行一些计算。我想要的是分析这个应用程序,以查看代码的哪些部分占用最多的时间等等。

我尝试了 VisualVM,但我无法真正理解发生了什么。我添加了分析器输出的图片。

我的问题是

  • 例如,第一行是什么,为什么要占用这么多时间? (scala.concurrent.forkjoin.ForkJoinPool.scan())
  • 由于 Akka 应用程序的异步行为,它们能否被很好地分析?
  • 例如,我可以查看一个特定参与者(-type)对于它收到的一个特定消息(-type)的工作时间吗?
  • 还有其他用于分析 Akka 应用程序的最佳实践吗?

【问题讨论】:

    标签: scala profiling akka


    【解决方案1】:
    • 默认情况下,有些程序包没有配置文件,scala.concurrent.forkjoin.ForkJoinPool.scan() 的配置文件中考虑了它们的时间。如果允许对所有隐藏的包进行采样,则将显示真正的 CPU 时间消耗者。例如,以下说明性配置文件之前/之后揭示了线程大部分时间都被sun.misc.Unsafe.park 等待解除停放。
    • 通过适当的检测和调用跟踪,可以很好地分析 Akka 应用程序。谷歌著名的Dapper, a Large-Scale Distributed Systems Tracing Infrastructure 论文包含对该技术的详细解释。 Twitter 基于此创建了Zipkin。它是开源的,有一个extension for distributed tracing of Akka。请关注其wiki,以获得有关如何设置允许的系统的良好说明

      • 跟踪参与者系统内的调用层次结构;
      • 调试请求处理管道(您可以登录到跟踪,使用自定义键值对对其进行注释);
      • 查看派生请求之间的依赖关系及其对最终响应时间的影响;
      • 查找和分析系统中最慢的请求。

      街区里还有一个新孩子,Kamon。它是一个响应式友好的工具包,用于监控在 JVM 之上运行的应用程序,它特别热衷于使用 Typesafe 响应式平台构建的应用程序。这对于 Akka 来说绝对是肯定的,并且集成以 kamon-akkakamon-akka-remote 模块的形式出现,它们带来字节码检测来收集指标并代表您执行自动跟踪上下文传播。浏览从 Akka Integration Overview 开始的文档,了解它可以做什么以及如何实现。

    【讨论】:

      【解决方案2】:

      就在几天前,TypeSafe announced TypeSafe console 现在是免费的。我不知道如何更好地分析 Scala/Akka 应用程序。当然,您可以尝试将 JProfiler 用于 JVM 语言,我已将它用于 Java 项目,但它不是免费的,而且适用于 Java。

      【讨论】:

      【解决方案3】:

      我正在考虑代码中的分析/指标,因为我也经常使用 Akka/Scala 来构建生产应用程序,但我也渴望听到其他方法来确保应用程序是健康的。

      1. Metrics (like Dropwizard)

      在代码中收集指标的非常好的工具,具有良好的documentation 和对GraphiteGangliaLogback 等的嵌入式支持。

      它具有用于收集应用内统计信息的详细工具,例如仪表、计数器直方图、计时 - 用于确定应用当前状态的信息、创建了多少演员等,如果他们还活着,当前是什么state 占大多数actors等。

      同意,这与分析有点不同,但有助于找到问题的根源,尤其是与一些字符构建工具集成时。

      1. Profilers like (VisualVM, XRebel)

      由于我很喜欢做监控,它仍然回答了一个稍微不同的问题——我的应用程序目前的见解是什么? 但是还有另一件事可能会打扰我们——我的代码有哪些慢(或草率)?

      出于这个原因,我们有 VisualVM 和这个问题的另一个答案 - 如何使用 VisualVM 分析 Akka 演员。

      另外,我建议尝试XRebel 分析器,它只会增加一点火力来确定哪些代码会使应用程序变慢。它也是付费的,但在我的项目中,它节省了大量处理草率代码的时间。

      1. New Relic

      我建议将它用于一些游乐场项目,因为您可以免费获得一些监控/分析解决方案,但对于更严肃的项目,我会选择上面强调的内容。

      因此,我希望我的概述对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 2016-11-10
        相关资源
        最近更新 更多