OpenSearch Автоматический выключатель: Использование, примеры, распространенные проблемы

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

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

В OpenSearch есть несколько выключателей, таких как fielddata, requests, network, indices и script compilation. Каждый выключатель используется для ограничения памяти, которую может использовать операция. Кроме того, в OpenSearch есть родительский выключатель, который используется для ограничения совокупной памяти, используемой всеми остальными выключателями.

Примеры

Увеличение размера автоматического выключателя для предела полевых данных - По умолчанию предел для выключателей полевых данных составляет 40 %. Следующая команда может быть использована для увеличения этого значения до 60 %:

Примечания

  • Каждый прерыватель поставляется с лимитами по умолчанию, и их лимиты также могут быть изменены. Но это настройка экспертного уровня, и вам следует внимательно изучить все подводные камни, прежде чем изменять лимиты, иначе узел может начать выбрасывать исключения OOM.
  • Иногда лучше провалить запрос, чем получить исключение OOM, потому что при появлении OOM JVM становится невосприимчивой.
  • Важно держать indices.breaker.request.limit ниже, чем indices.breaker.total.limit, чтобы выключатели запросов срабатывали раньше, чем выключатели общего объема.

Общие проблемы

  • Наиболее распространенной ошибкой, возникающей при работе с автоматическими выключателями, является "data too large" с кодом состояния 429. Приложение должно быть готово к обработке таких исключений.
  • Если приложение начинает выбрасывать исключения из-за ограничений автоматического выключателя, необходимо пересмотреть запросы и требования к памяти. В большинстве случаев требуется масштабирование путем добавления дополнительных ресурсов в кластер.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий