java - Akka 性能问题

标签 java performance akka cascading

我编写了一个 Akka 应用程序,让 10 个参与者执行我的自定义代码(即,从文件中逐行读取数据,应用一些函数,并将数据写入输出文件)。

当我在tomcat中执行代码时,当actor数量高于4时,性能会下降。

如果我执行与“Run AS JAVA Application”相同的代码,那么性能会很好。

在 tomcat 中运行 Akka 代码时是否缺少任何配置?请帮我解决这个性能问题。感谢您的帮助。

最佳答案

要了解是什么限制了应用程序的性能,您可以尝试使用一些分析器,例如 Visual vm。您可以查看线程面板,看看参与者使用了哪些线程,哪些线程是 tomcat 生成的,什么是热门线程/方法/代码行。这应该可以让您了解应用程序中的线程使用情况和薄弱环节。此外,您还应该了解代码的“边界”类型 - 最有可能是 cpu 或 io 边界。

根据之前获得的知识,你应该能够对代码进行一些优化。

可能的方向是:

  • io 相关优化(线程使用、缓冲)。我建议您查看akka-streams处理流数据(例如 csv 文件中的数据)的方式。 documentation中有专门的章节关于这一点。
  • 函数的算法优化。
  • 调整 akka actor 的资源使用。您可能想知道与 akka actor 一起工作时是调度程序设置。基本上,调度程序管理线程池并将参与者绑定(bind)到它。您可以阅读documentation关于这一点。

关于java - Akka 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35865910/

相关文章:

java getGraphics()返回null,如何访问paintComponent?

php - PHP 是否更快地解析带有//注释或换行符的代码?

arrays - 我是否必须避免追加性能?

Scala/Akka/Guice 动态注入(inject) child Actor

scala - Akka Slick 和 ThreadLocal

java - 父/子关系的 Hibernate 注释映射?

java - 如何使用 switch 语句实现字符串堆栈?

scala - 为什么编译器找不到导入了 Implicits.global 的隐式 ExecutionContext?

java - 签署 JAX-WS SOAP 请求

performance - CPU 占用最少的循环