Почему мое приложение Akka зависает через 1-2 дня? - PullRequest
0 голосов
/ 05 мая 2018

В моем приложении Akka HTTP в некоторых случаях мне приходится инициализировать свою систему акторов несколько раз. Как и в моих услугах, мне нужен неявный val исполнителей и актерских систем. Итак, я инициализировал систему актера 4 раза в своих классах уровня обслуживания:

private implicit val actorSystem = ActorSystem()

Я уничтожил только одну систему акторов, которая находится на корневом уровне. Другие не прекращены.

Влияет ли это на производительность моего приложения? Потому что мое приложение зависает через 1-2 дня работы.

1 Ответ

0 голосов
/ 05 мая 2018

Использование многих систем актеров в вашем приложении - плохая идея.

Обычно каждая ActorSystem поставляется с диспетчером по умолчанию, который поддерживается пулом fork-join. Этот пул действительно отлично справляется с балансировкой работы и доступных потоков. То есть, если вы запускаете много систем акторов на одной и той же JVM, это приведет к созданию слишком большого количества (виртуальных) потоков, что снизит производительность процесса. В идеале вам нужно столько потоков, сколько у вас процессорных ядер с оптимальным использованием.

Пожалуйста, прочитайте эту статью один раз https://manuel.bernhardt.io/2016/08/23/akka-anti-patterns-too-many-actor-systems/

Также, пожалуйста, дайте мне знать, если это ответит на ваш вопрос.

...