gpt4 book ai didi

scala - 如何分析 Akka 应用程序?

转载 作者:行者123 更新时间:2023-12-01 19:58:02 25 4
gpt4 key购买 nike

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

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

我的问题是

  • 例如,第一行是什么?为什么它花费了这么多时间? (scala.concurrent.forkjoin.ForkJoinPool.scan())
  • Akka 应用程序的异步行为能否得到很好的分析?
  • 例如,我可以查看某个特定参与者(类型)为其收到的一条特定消息(类型)工作多长时间吗?
  • 还有其他分析 Akka 应用程序的最佳实践吗?

Profiler

最佳答案

  • 默认情况下,有些软件包未进行分析,并且在 scala.concurrent.forkjoin.ForkJoinPool.scan() 的配置文件中考虑的是它们的时间。如果允许对所有隐藏的包进行采样,则真正的 CPU 时间消耗者将会被揭露。例如,以下之前/之后的说明性配置文件表明,线程在大多数时间都因等待取消停放而进入休眠状态。 before after
  • 通过适当的检测和调用跟踪,可以很好地分析 Akka 应用程序。谷歌著名Dapper, a Large-Scale Distributed Systems Tracing Infrastructure论文包含该技术的详细解释。 Twitter 创建 Zipkin基于此。它是开源的,并有 extension for distributed tracing of Akka 。关注wiki很好地解释了如何设置一个允许的系统

    • trace call hierarchies inside an actor system;
    • debug request processing pipelines (you can log to traces, annotate them with custom key-value pairs);
    • see dependencies between derived requests and their contribution to resulting response time;
    • find and analyse slowest requests in your system.

    街区里还有一个新 child ,Kamon 。它是一个响应式友好的工具包,用于监视在 JVM 之上运行的应用程序,特别适合使用 Typesafe Reactive Platform 构建的应用程序。这对于 Akka 来说绝对意味着"is",并且集成以 kamon-akka 和 kamon-akka-remote 模块的形式出现,这些模块带来了字节码工具来收集指标并执行自动跟踪代表您进行上下文传播。浏览从 Akka Integration Overview 开始的文档了解它能做什么以及如何实现这一目标。

关于scala - 如何分析 Akka 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17785307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com