2016-08-15 2 views
0

Недавно я начал использовать Apache Storm. Прямо сейчас, сосредоточив внимание на некоторых тестах производительности и настройке для одного из моих приложений (вытаскивает данные из базы данных NoSQL, форматирует и публикует в очереди JMS для потребления запрашивающим), чтобы одновременно обрабатывать больше параллельных запросов. Я смог настроить топологию с точки зрения изменения нет. болтов, MAX_SPENDING_SPOUT и т. д. и дросселировать поток данных в топологии с использованием некоторого тикающего подхода.Влияние большего числа исполнителей, чем процессоры/ядра в Storm Cluster

Я хотел знать, что происходит, когда мы определяем больше параллелизма, чем отсутствие сердец. В моем случае у меня есть единственный узел, единственная рабочая топология и машина имеет 32 ядра. Но общее количество исполнителей (для всех желобов и болтов) = 60. Так что мои вопросы:

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

  2. Если я определяю 20 (только случайный выбор) исполнителей для Болта, и мой поток кода никогда не должен использовать Болт, будет ли это влиять на производительность? Как шторм справляется с этой ситуацией?

ответ

0

Это очень общий вопрос, поэтому ответ (как всегда): это зависит.

Если ваша нагрузка большая, а один исполнитель полностью использует ядро, наличие большего количества исполнителей не может дать вам никаких улучшений пропускной способности. Если есть какое-либо влияние, это может быть отрицательным (также в отношении утверждения внутренних используемых очередей, которым все исполнители должны читать и записывать для передачи кортежей).

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

Кроме того, учтите, что Storm охватывает еще несколько потоков внутри каждого рабочего. Таким образом, если ваши исполнители полностью используют ваше оборудование, этот поток также будет затронут.

В целом, вы не должны запускать свои топологии, чтобы использовать ядро ​​полностью в любом случае, но оставить верхнюю комнату формы для небольших «всплесков» и т. Д. В работе возможно 80% загрузка процессора может быть хорошим значением. Как правило, один исполнитель на ядро ​​должен быть в порядке.

Смежные вопросы