Как настроить и настроить Akka Dispatchers

Я просматриваю документацию здесь: http://doc.akka.io/docs/akka/2.3.3/java/dispatchers.html

Мы используем Akka таким образом, что у нас есть два отдельных диспетчера (исполнители fork-join по умолчанию) для разных участников. Теперь у нас возникли некоторые проблемы с производительностью, и мы изучаем, как мы можем настроить параметры конфигурации диспетчера и посмотреть, как они влияют на производительность приложения.

Я просмотрел документацию, но не очень понимаю параметры конфигурации. Например, только для простого диспетчера fork-join-executor по умолчанию:

Что это такое и как их настроить, чтобы увидеть, как они влияют на производительность приложения?

# Min number of threads to cap factor-based parallelism number to
parallelism-min = 2
# Parallelism (threads) ... ceil(available processors * factor)
parallelism-factor = 2.0
# Max number of threads to cap factor-based parallelism number to
parallelism-max = 10

Спасибо!


person HiChews123    schedule 28.05.2014    source источник


Ответы (1)


Эта конфигурация, конечно, зависит от вашего оборудования.

Скажем, у вас есть 2 доступных процессора на вашей машине, тогда вы можете настроить количество потоков, которые будет иметь данный диспетчер, с помощью коэффициента параллелизма.

current number of thread = available processor * parallelism-factor

Затем вы можете зафиксировать границы, чтобы контролировать результат этого умножения и избегать экстремальных значений.

parallelism-min < current number of thread < parallelism-max

Теперь, если вы хотите выбрать правильный коэффициент параллелизма + границы, вы должны спросить себя, за сколько акторов в данный момент времени будет отвечать ваш диспетчер.

Кажется логичным предположить, что чем больше участников, тем больше потоков, но я настоятельно рекомендую вам следить за своей системой, чтобы найти основную причину проблем с производительностью, а не просто случайную настройку конфигурации.

В качестве примечания вы должны проверить параметр «пропускная способность» вашего диспетчера, поскольку он позволяет вам настроить справедливость распределения потоков актера. Это действительно может иметь большое значение в случае пакетного процесса.

# Throughput defines the maximum number of messages to be
  # processed per actor before the thread jumps to the next actor.
  # Set to 1 for as fair as possible.
  throughput = 100 
person Arnaud Gourlay    schedule 28.05.2014
comment
Не могли бы вы уточнить параметр пропускной способности? - person Diego Ramos; 12.07.2019