Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Руководство [7.17] ›Настройка Elasticsearch ›Настройка Elasticsearch

Пулы потоков

Узел использует несколько пулов потоков для управления потреблением памяти. Очереди, связанные со многими пулами потоков, позволяют удерживать ожидающие запросы вместо их отбрасывания.

Существует несколько пулов потоков, но важными являются следующие:

generic
Для общих операций (например, обнаружения узлов в фоновом режиме). Тип пула потоков — scaling.
search
Для операций count/search/suggest. Тип пула потоков — fixed_auto_queue_size с размером int(( # of allocated processors * 3) / 2) + 1 и начальным размером очереди 1000.
search_throttled
Для операций count/search/suggest/get по search_throttled indices. Тип пула потоков — fixed_auto_queue_size с размером 1 и начальным размером очереди 100.
search_coordination
Для лёгких координационных операций, связанных с поиском. Тип пула потоков — fixed с размером максимум min(5, ( # of allocated processors ) / 2) и размером очереди 1000.
get
Для операций get. Тип пула потоков — fixed с размером # of allocated processors, размером очереди 1000.
analyze
Для запросов analyze. Тип пула потоков — fixed с размером 1, размером очереди 16.
write
Для запросов index/delete/update одного документа и bulk запросов. Тип пула потоков — fixed с размером # of allocated processors, размером очереди 10000. Максимальный размер для данного пула — 1 + # of allocated processors.
snapshot
Для операций snapshot/restore. Тип пула потоков — scaling с keep-alive 5m и максимум min(5, ( # of allocated processors ) / 2).
snapshot_meta
Для чтения метаданных репозитория snapshot. Тип пула потоков — scaling с keep-alive 5m и максимум min(50, ( # of allocated processors * 3)).
warmer
Для операций прогрева сегментов. Тип пула потоков — scaling с keep-alive 5m и максимум min(5, ( # of allocated processors ) / 2).
refresh
Для операций refresh. Тип пула потоков — scaling с keep-alive 5m и максимум min(10, ( # of allocated processors ) / 2).
listener
В основном для выполнения действий java-клиента, когда потоку слушателя задан режим true. Тип пула потоков — scaling с максимальным значением по умолчанию min(10, ( # of allocated processors ) / 2).
fetch_shard_started
Для перечисления состояний фрагментов. Тип пула потоков — scaling с keep-alive 5m и максимальным размером по умолчанию 2 * # of allocated processors.
fetch_shard_store
Для перечисления хранилищ фрагментов. Тип пула потоков — scaling с keep-alive 5m и максимальным размером по умолчанию 2 * # of allocated processors.
flush
Для операций flush, synced flush и translog fsync. Тип пула потоков — scaling с keep-alive 5m и максимальным размером по умолчанию min(5, ( # of allocated processors ) / 2).
force_merge
Для операций force merge. Тип пула потоков — fixed с размером 1 и неограниченным размером очереди.
management
Для управления кластером. Тип пула потоков — scaling с keep-alive 5m и максимальным размером по умолчанию 5.
system_read
Для операций чтения системных индексов. Тип пула потоков — fixed с максимальным размером по умолчанию min(5, ( # of allocated processors ) / 2).
system_write
Для операций записи в системные индексы. Тип пула потоков — fixed с максимальным размером по умолчанию min(5, ( # of allocated processors ) / 2).
system_critical_read
Для критических операций чтения системных индексов. Тип пула потоков — fixed с максимальным размером по умолчанию min(5, ( # of allocated processors ) / 2).
system_critical_write
Для критических операций записи в системные индексы. Тип пула потоков — fixed с максимальным размером по умолчанию min(5, ( # of allocated processors ) / 2).
watcher
Для выполнения задач watch. Тип пула потоков — fixed с максимальным размером по умолчанию min(5 * ( # of allocated processors ), 50) и размером очереди 1000.

Параметры пулов потоков являются статическими и могут быть изменены путём редактирования elasticsearch.yml. Изменение конкретного пула потоков может быть выполнено путём настройки его параметров; например, изменение числа потоков в пуле write потоков:

thread_pool:
    write:
        size: 30

Типы пулов потоков

Ниже приведены типы пулов потоков и их соответствующие параметры:

fixed

Пул потоков fixed поддерживает фиксированное количество потоков для обработки запросов с очередью (возможно, ограниченной) для ожидающих запросов, для которых нет потоков для обработки.

Параметр size управляет количеством потоков.

Параметр queue_size позволяет контролировать размер очереди ожидающих запросов, для которых нет потоков для их выполнения. По умолчанию он равен -1, что означает неограниченную очередь. Если запрос поступает, а очередь заполнена, запрос будет прерван.

thread_pool:
    write:
        size: 30
        queue_size: 1000

fixed_auto_queue_size

Эта функция находится в стадии технического предварительного просмотра и может быть изменена или удалена в будущих релизах. Elastic будет работать над устранением любых проблем, но функции в стадии технического предварительного просмотра не подпадают под SLA поддержки официальных функций GA.

Устарело в 7.7.0.

Тип экспериментального пула потоков fixed_auto_queue_size устарел и будет удален в версии 8.0.

Пул потоков fixed_auto_queue_size поддерживает фиксированное количество потоков для обработки запросов с ограниченной очередью для ожидающих запросов, для которых нет потоков для обработки. Он похож на пул потоков fixed, однако размер очереди queue_size автоматически регулируется в соответствии с расчетами, основанными на законе Литтла. Эти расчеты могут изменять размер очереди queue_size вверх или вниз на 50 каждый раз после завершения auto_queue_frame_size операций.

Параметр size управляет количеством потоков.

Параметр queue_size позволяет контролировать начальный размер очереди ожидающих запросов, для которых нет потоков для их выполнения.

Настройка min_queue_size контролирует минимальный размер, до которого может быть отрегулирован размер очереди queue_size.

Настройка max_queue_size контролирует максимальный размер, до которого может быть отрегулирован размер очереди queue_size.

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

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

thread_pool:
    search:
        size: 30
        queue_size: 500
        min_queue_size: 10
        max_queue_size: 1000
        auto_queue_frame_size: 2000
        target_response_time: 1s

scaling

Пул потоков scaling поддерживает динамическое количество потоков. Это количество пропорционально объему работы и варьируется между значениями параметров core и max.

Параметр keep_alive определяет, как долго поток должен сохраняться в пуле потоков без выполнения работы.

thread_pool:
    warmer:
        core: 1
        max: 8
        keep_alive: 2m

Настройка назначенных процессоров

Количество процессоров автоматически обнаруживается, а параметры пула потоков автоматически настраиваются на основе этого значения. В некоторых случаях может быть полезно переопределить количество обнаруженных процессоров. Это можно сделать, явно задав настройку node.processors.

node.processors: 2

Есть несколько случаев использования для явного переопределения настройки node.processors:

  1. Если вы запускаете несколько экземпляров Elasticsearch на одном хосте, но хотите, чтобы Elasticsearch настраивал свои пулы потоков так, как будто у него только часть процессорной мощности, вам следует переопределить настройку node.processors на желаемую долю. Например, если вы запускаете два экземпляра Elasticsearch на машине с 16 ядрами, установите node.processors в значение 8. Обратите внимание, что это случай экспертного использования, и тут много нюансов помимо просто установки настройки node.processors, так как есть другие соображения, такие как изменение количества потоков сборки мусора, привязка процессов к ядрам и так далее.
  2. Иногда количество процессоров неправильно определяется, и в таких случаях явное задание настройки node.processors позволит обойти эти проблемы.

Для проверки количества обнаруженных процессоров используйте API информации о узлах с флагом os.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/modules-threadpool.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API