如何推荐Akka应用程序?

Bjö*_*obs 22 profiling scala akka

我有一个小的Akka应用程序,它在其actor之间传递许多消息,每个actor对它接收的数据进行一些计算.我想要的是分析这个应用程序,以查看代码的哪些部分占用大部分时间等等.

我试过VisualVM,但我真的不明白发生了什么.我添加了一个探查器输出的图片.

我的问题是

  • 例如,第一行是什么,为什么需要花费这么多时间?(scala.concurrent.forkjoin.ForkJoinPool.scan())
  • Akka应用程序可以因为它们的异步行为而被描述得很好吗?
  • 例如,我可以看到一个特定的actor(-type)对它收到的一个特定消息(-type)的工作时间有多长?
  • 是否还有其他最佳实践来分析Akka应用程序?

探查

Max*_*ako 14

  • 默认情况下,有些包未被分析,它们的时间是在配置文件中计算的scala.concurrent.forkjoin.ForkJoinPool.scan().如果允许对所有隐藏包进行采样,则会显示真正的CPU时间消费者.例如,在说明性配置文件之前/之后的下列内容通过sun.misc.Unsafe.park等待取消暂停来发现线程在大多数时间处于休眠状态. 之前后
  • 通过适当的仪器和呼叫跟踪,可以非常好地分析Akka应用程序.谷歌着名的Dapper是一种大规模分布式系统跟踪基础设施文件,其中包含该技术的详细说明.Twitter 基于此创建了Zipkin.它是开源的,并具有Akka分布式跟踪扩展.关注其维基,以获得有关如何设置允许的系统的详细说明

    • 跟踪actor系统内的调用层次结构;
    • 调试请求处理管道(您可以记录跟踪,使用自定义键值对注释它们);
    • 查看派生请求之间的依赖关系及其对结果响应时间的贡献;
    • 查找并分析系统中最慢的请求.

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


4le*_*x1v 7

就在几天前类型安全的宣布类型安全控制台现在是免费的.我不知道分析Scala/Akka应用程序有什么好处.因为你可以尝试使用Jrof语言的JProfiler,我已经将它用于Java项目,但它不是免费的,而且是Java.

  • 不幸的是,Typesafe控制台项目已停止:https://groups.google.com/forum/#!forum /typesafe-console (4认同)

Art*_*mis 5

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

  1. 度量标准(如Dropwizard)

非常好的工具,用于收集代码中的指标,具有良好的文档和嵌入式支持Graphite,Ganglia,Logback等.

它有详细的工具,用于收集应用程序内的统计数据,例如仪表,计数器直方图,时间 - 用于确定应用程序当前状态的信息,创建的演员数量等等,如果它们还活着,那么当前的状态是什么大多数演员等

同意,它与分析有点不同,但有助于找到问题的根源,特别是如果与一些char构建工具集成.

  1. Profilers(VisualVM,XRebel)

由于我在进行监控方面非常有趣,它仍然会回答一个稍微不同的问题 - 目前我的应用程序的当前见解是什么?但是还有另外一件事可能会打扰我们 - 我的代码是什么慢(或马虎)?

出于这个原因,我们有VisualVM和另一个问题的答案 - 如何用VisualVM来描述Akka actor.

另外,我建议尝试使用XRebel探测器,只需添加更多的火力来确定哪些代码使应用程序变慢.它也付了钱,但在我的项目中它节省了很多时间来处理草率的代码.

  1. 新遗物

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

所以我希望,我的概述很有帮助.