OpenSearch Threadpool - типы, примеры и советы

OpenSearch использует пулы потоков для управления обработкой запросов и оптимизации использования ресурсов на каждом узле кластера.

Для чего он используется

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

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

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

Fixed - фиксированное число потоков с фиксированным размером очереди

Масштабирование - переменное количество потоков, которое OpenSearch масштабирует автоматически в зависимости от рабочей нагрузки.

fixed_autoqueue_size - фиксированное число потоков с переменным размером очереди, который динамически изменяется для поддержания заданного времени отклика

Примеры

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

Примечания и полезные советы

В общем случае не рекомендуется изменять настройки пула потоков. Однако стоит отметить, что потоковые пулы устанавливаются в зависимости от количества процессоров, которое OpenSearch обнаружил на базовом оборудовании. Если это определение не удалось, то в OpenSearch.yml следует явно задать количество процессоров, доступных на вашем оборудовании, следующим образом:

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

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

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

Чтобы лучше понять производительность кластера OpenSearch, можно отслеживать пулы потоков. Панель мониторинга OpenSearch в Kibana показывает графики очередей потоков поиска, получения и записи, а также отклонения очередей. Растущие очереди указывают на то, что OpenSearch с трудом справляется с запросами, а отклонения - на то, что очереди выросли настолько, что OpenSearch отклоняет обращения к серверу.

Проверьте причины увеличения очередей. Попытайтесь сбалансировать активность на узлах кластера и сбалансировать требования к пулу потоков кластера, предприняв действия на стороне клиента.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий