Я работаю над моделью Akka Actor. У меня есть вариант использования, в котором будут активны более 1000 актеров, и мне нужно обработать этих актеров. Я думал об управлении количеством потоков с помощью конфигурации, определенной в application.conf.
Но нет. потока диспетчера, созданного в моем приложении, делает меня беспомощным в настройке конфигурации диспетчера. Каждый раз, когда я перезапускаю свое приложение, я вижу разное количество созданных потоков диспетчера (я проверял это через дамп потока каждый раз после запуска приложения).
Даже количество потоков не равно тому, которое я определил в parallelism-min. Из-за этого небольшого количества потоков мое приложение обрабатывается очень медленно. При проверке нет. ядра на моей машине с помощью приведенного ниже кода:
Runtime.getRuntime(). AvailableProcessors();
Он показывает 40. Но нет. количество созданных потоков диспетчера меньше 300, даже если я настроил параллелизм как 500.
Ниже приведен мой файл application.conf:
consumer-dispatcher {
type = "Dispatcher"
executor = "fork-join-executor"
fork-join-executor {
parallelism-min = 500
parallelism-factor = 20.0
parallelism-max = 1000
}
shutdown-timeout = 1s
throughput = 1
}
Могу ли я узнать, на каком основании akka будет создавать внутренние потоки диспетчера и как я могу увеличить количество потоков диспетчера, чтобы увеличить параллельную обработку акторов?