Как определить, что вызывает нестабильность API запросов ES

#elasticsearch #kibana

#elasticsearch #kibana

Вопрос:

Обычно мой API запросов ES занимает менее 1 секунды.Но иногда эти запросы становятся медленными.

кластер состоит из трех компьютеров 32G (16G выделено ES).Индекс состоит из 20 первичных файлов и 1 реплики, 303 000 000 dos-файлов и 500 ГБ первичного хранилища и 1 ТБ хранилища.

Вот данные мониторинга kibana:

1
2
3`

Лично я думаю, что это результат GC. Я хочу добавить машины.Но мне нужно найти причину, чтобы убедить моего лидера.

Комментарии:

1. У вас есть журналы запросов? Есть ли определенный запрос, который выполняется медленно? Вы можете установить пороговые значения для регистрации запросов с index.search.slowlog.threshold.* настройками конфигурации.

2. Я настраиваю его. Я уверен, что это не было вызвано плохими запросами.

Ответ №1:

Да, это может быть проблема GC. Но не могли бы вы быть более конкретными? Что вы подразумеваете под медленным?

В любом случае, кажется, что выделенная куча слишком велика для ваших нужд. У вас есть коллекция, когда объем кучи равен 12Go (75% от 16go), и каждый раз она возвращается к 5go. Это генерирует огромную сборку мусора.

Вы должны попытаться уменьшить кучу, например, до 10Go, и проверить влияние на производительность количества GC и продолжительности GC.

Я рекомендую и вам прочитать эту статью https://www.elastic.co/blog/a-heap-of-trouble особенно часть «Вместе мы можем предотвратить лесные пожары».

Комментарии:

1. Спасибо, сэр. Я прочитаю статью, которую вы рекомендуете. Я разбиваю исходный индекс ежемесячно, чтобы уменьшить объем данных. Теперь объем данных, используемых для одного запроса, значительно сокращен. Проблема, похоже, была решена.

2. @SuperPirate даже при этом вы, безусловно, должны уменьшить настроенный размер кучи ваших узлов 🙂