为什么我的Akka应用程序会在1到2天后挂起?

时间:2018-05-05 17:47:05

标签: scala akka akka-http

在我的Akka HTTP应用程序中,我必须在某些情况下多次初始化我的actor系统。就像在我的服务中一样,我需要执行器和actor系统的隐式val。所以,我在我的服务层类中初始化了一个这样的actor系统4次:

private implicit val actorSystem = ActorSystem()

我只终止了一个处于根级别的actor系统。其他人没有被终止。

这会影响我的应用程序性能吗?因为我的应用程序在运行1到2天后就会挂起。

1 个答案:

答案 0 :(得分:8)

在您的应用程序中使用许多actor系统是一个坏主意。

基本上每个ActorSystem都附带一个默认的调度程序,它由fork-join池支持。这个池在平衡工作和可用线程方面做得非常好。也就是说,如果在同一个JVM上运行多个actor系统,最终会创建太多(虚拟)线程,从而导致进程中的性能下降。理想情况下,您需要尽可能多的线程,因为CPU核心具有最佳利用率。

请在https://manuel.bernhardt.io/2016/08/23/akka-anti-patterns-too-many-actor-systems/

后查看此文章

如果这回答了你的问题,也请告诉我。