2016-03-08 62 views
0

我写了一个Akka应用程序,让10个角色执行我的自定义代码(即,逐行读取数据,应用一些函数,并将数据写入输出文件)。Akka性能问题

当我在tomcat的执行代码,当演员的数量高于4

如果我执行相同的代码为“AS运行Java应用程序”,然后表现还是不错的性能下降。

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

回答

1

要了解什么限制了应用程序的性能,可以尝试使用一些分析器,例如visual vm。你可以看一下线程面板,看看由演员和利用线程的tomcat出生什么的线程,什么是热码线/方法/线。这应该给你的应用程序的线程使用的一些想法和薄弱的地方。你也应该知道你的代码的“边界”类型 - 很可能它是cpu或io绑定的。

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

可能的方向是:

  • IO相关的优化(线程用法,bufferring)。我建议你看看与像CSV文件中的数据流数据的工作akka-streams方式。那里有一个特别的章节documentation
  • 算法优化您的功能。
  • 调整akka演员的资源使用情况。您可能想知道与akka演员合作的时间是调度员设置。基本上,调度员管理线程池并将参与者绑定到它。你可以阅读documentation