我编写了一个 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/