Как отследить медленные запросы Elasticsearch? - PullRequest
0 голосов
/ 25 февраля 2019

Мне нужен совет по диагностике медленных запросов Elasticseach.

Настройка

  • 1 узел кластера в ElasticCloud (1 первичный осколок, 0 реплик),примечание: ElasticCloud = нет замедления.(да, я знаю, что у меня должно быть больше узлов ... но это просто DEV)
  • Взаимодействие с кластером через мое Azure .NET Web App с использованием библиотеки NEST

Поведение

  • Большинство времени отклика для моего веб-сервера составляют 50-80 мс
  • Все запросы раз в ES (например, взяли) составляют <5 мс. </li>
  • Задержка в сети между моим веб-сервером и ElasticCloud составляет около 15 мс

Проблема - Иногда время отклика прыгает между 100-200 мс, но требуетсяеще 1мс.Мне удалось повторить это поведение и на локальном компьютере (с помощью док-станции ElasticSearch).

Вот отрывок из захваченного мною Fiddler, который является вызовом Elasticsearch из моего приложения:

ClientConnected:            17:28:44.325 
ClientBeginRequest:    17:34:34.953 
GotRequestHeaders:    17:34:34.953 
ClientDoneRequest:    17:34:34.953 
Determine Gateway:    0ms 
DNS Lookup:         0ms 
TCP/IP Connect:            0ms 
HTTPS Handshake:    0ms 
ServerConnected:       17:34:27.538 
FiddlerBeginRequest:    17:34:34.953 
ServerGotRequest:    17:34:34.953 
ServerBeginResponse:    17:34:35.171 
GotResponseHeaders:  17:34:35.171 
ServerDoneResponse:    17:34:35.172 
ClientBeginResponse:  17:34:35.172 
ClientDoneResponse:    17:34:35.178

ИтакВыше указано, что для обработки запроса кластеру Elasticsearch потребовалось 218 мс.Однако это занимает 1 мс.

Как я могу отследить этот медленный запрос?Понятно, что это не скорость запроса (поскольку он занимает мало), поэтому он должен быть чем-то в кластере.

Любой совет?

РЕДАКТИРОВАТЬ

Вот некоторые данные из Kibana, за 15-минутный нагрузочный тест, который я сделал: enter image description here

Итак ... на основании моего анализа noob-ish там ничего не выглядит плохо.

  • Задержка поиска / задержка быстрая (<5 мс) </li>
  • Куча JVM выглядит нормально
  • Штраф процессора
  • Нет чрезмерной GC

Тем не менее, вот что я вижу из моего инструмента нагрузочного тестирования: enter image description here

Вот статистика из моего инструмента мониторинга перфорирования.Вы можете ясно видеть шипы и медленные выбросы: enter image description here

Не знаете, куда еще идти?Есть ли какая-то другая метрика, которую я должен искать?

1 Ответ

0 голосов
/ 27 февраля 2019

Просто чтобы прояснить, что не входит в took (скопировано с Elastic Discuss ):

  • сериализация запроса в JSON на клиенте
  • отправка запроса по сети
  • десериализация запроса от JSON на сервере
  • сериализация ответа в JSON на сервере
  • отправка ответа по сети
  • десериализация ответа от JSON на клиенте

Поскольку took настолько низок, вероятно, в самом запросе или ответе нет ничего плохого.Также все статистические данные, которые вы опубликовали в Elasticsearch, выглядят великолепно.Мне интересно, может ли это быть сеть или что-то в сериализации?

PS: Я не думаю, что это правда, вам просто нужно включить его через API, а не через файл конфигурации.Но так как ваш took настолько низок, вы не найдете здесь ничего релевантного.

примечание: ElasticCloud = no slowlog

...