OpenSearch Медленные запросы: Использование Slow Logs для решения проблемы медленных запросов

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

Table of Contents

Медленные запросы часто вызваны

  1. Плохо составленные или дорогие поисковые запросы.
  2. Плохо настроенные кластеры или индексы OpenSearch.
  3. Переполненные ресурсы процессора, памяти, дисков и сети на кластере.
  4. Периодические фоновые процессы, такие как моментальные снимки или объединение сегментов, которые потребляют ресурсы кластера (процессор, память, диск), что приводит к медленному выполнению других поисковых запросов, поскольку ресурсы для основных поисковых запросов доступны не полностью.
  5. Объединение сегментов используется для уменьшения количества сегментов, что улучшает задержку поиска, однако объединение может быть дорогостоящим процессом, особенно в средах с низким уровнем ввода-вывода.

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

Руководство по устранению неполадок, как эффективно использовать медленные журналы

  1. Всегда определяйте соответствующий порог регистрации для поиска медленных запросов в вашем приложении. Определите различные уровни журнала для ускорения отладки. Например, более 20 мс подходит для ведения журнала TRACE, а более 250 мс следует регистрировать как WARN. Эти пороговые значения предназначены для систем реального времени, таких как поиск в электронной коммерции, и должны быть настроены на основе SLA приложения.
  2. Существует две фазы поиска: фаза запроса и фаза получения. Более подробную информацию можно найти здесь, на сайте OpenSearch. Важно понимать, как работают эти фазы, и установить правильный порог для каждой из них.
  3. Медленные журналы всегда специфичны для шарда, и именно здесь большинство людей ошибаются, когда смотрят на журнал медленных запросов, не понимая всей картины. Более подробную информацию о том, как шарды ES играют важную роль в ее производительности, можно найти в руководстве по устранению неполадок, связанных с задержкой поиска.
  4. Журнал медленных запросов включает фазу, к которой он относится, и по умолчанию это запрос, затем выборка, но это может быть и DFS-запрос, затем выборка, что обеспечивает лучший результат поиска за счет снижения производительности. Поэтому важно искать именно такие запросы.
  5. Сложение времени отклика всех медленных запросов с участием всех соответствующих шардов не дает общего времени поиска и не включает время сбора результатов со всех шардов и выборки лучших результатов (фаза выборки).
  6. Чтобы решить проблему, упомянутую в #4, всегда имейте в своем приложении журнал трассировки, который отслеживает параметр "took" ответа OpenSearch. По сути, это общее время, затраченное на выполнение одного запроса OpenSearch на всех соответствующих шардах и получение верхних результатов со всех шардов. Параметр "Took" ответа OpenSearch является корректным показателем общего времени, затраченного на выполнение запроса (включая время, затраченное на отправку запросов на все релевантные шарды, сбор и объединение результатов со всех шардов).
  7. Если вы имеете дело с многопользовательским кластером ES, на котором размещено несколько индексов, то простой проверки медленных журналов одного проблемного индекса будет недостаточно, так как иногда медленные журналы в проблемном индексе вызваны тяжелыми поисками в других индексах. Поэтому при возникновении проблем всегда лучше проверить медленные поисковые запросы во всем кластере (или хотя бы в больших индексах).
  8. Примерами тяжелых поисковых запросов являются регексовые запросы, префиксные запросы, тяжелые агрегаты, match_all, огромное значение параметра size и запросы с глубокой пагинацией. Отфильтруйте медленные журналы поиска по этим запросам и посмотрите, как работают эти запросы.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий