2015-11-09 2 views
4

Сколько ящиков и реплик я должен установить для использования каждого ядра процессора (я хочу 100% -ную загрузку, самые быстрые результаты запроса) в моем кластере?Как максимизировать ядра ЦП на кластере Elasticsearch

Я хочу использовать Elasticsearch для скопления. Я читал, что Elasticsearch использует несколько ядер процессора, но не нашел точных сведений о ядрах процессора в отношении осколков и реплик.

Мои наблюдения состоят в том, что один осколок не использует более одного ядра/потока во время запроса (учитывается только один запрос за раз). С репликами запрос индекса 1-мерцания выполняется не быстрее, поскольку Elasticsearch, похоже, не использует другие узлы для распределения нагрузки на осколок.

Мои вопросы (один запрос в то время):

  • Осколок не использует более одного ядра процессора?
  • Осколки всегда должны быть отсканированы полностью, реплики не могут использоваться для разделения внутригрудной нагрузки между узлами?
  • Формула для лучшей производительности - SUM (CPU_CORES на узел) * PRIMARY_SHARDS?

ответ

5

При выполнении операции (индексирование, поиск, объемная индексация и т. Д.) Осколок на узле использует один поток выполнения, что означает одно ядро ​​ЦП.

Если в данный момент у вас есть один запрос, который будет использовать одно ядро ​​ЦП на каждый осколок. Например, кластер из трех узлов с одним индексом, который имеет 6 первичных осколков и одну реплику, будет иметь в общей сложности 12 черепов, 4 осколка на каждом узле.

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

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