Как настроить и настроить 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

Спасибо!

1 ответ

Решение

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

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

current number of thread = available processor * parallelism-factor

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

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

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

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

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

# 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 
Другие вопросы по тегам