Elasticsearch снижает производительность поисковых запросов

У меня много проблем с настройкой Elasticsearch для обеспечения высокой производительности поисковых запросов. Это мои характеристики:

Настройка ES: Версия: 0.90.0, 2 узла (m3.2xlarge экземпляры aws) в кластере, 32 ГБ ОЗУ каждый, 50% выделено для ES_HEAP_SIZE, без подкачки

Данные: 75 ММ документов, 25 полей в каждом

Запросы, сделанные для эталонного теста: запрос с несколькими совпадениями для 5 текстовых полей

Я пробовал все, что упоминалось здесь и здесь

При частоте входных запросов до 30 запросов в секунду время отклика остается менее 1 с. Выше 30+ запросов в секунду производительность резко падает, а время отклика увеличивается до 50 секунд. Пока это происходит, JVM Heap стабилен (около 7-8 в bigdesk), и GC также стабилен. Тем не менее, загрузка ЦП быстро увеличивается и составляет 800% (8 ядер), а средняя нагрузка очень высока 16. Горячие потоки продолжают переключаться между функциями поиска и оценки, такими как BooleanScorer2.nextDoc, BooleanQuery.createWeight, DisjunctionSumScorer.advance, BufferedIndexInput.refill. и тому подобное

Вопрос: Не могли бы вы помочь мне выяснить, почему производительность резко падает после 30 запросов в секунду и как решить эту проблему, изменив конфигурацию кластера, если это возможно.

Заранее спасибо!


person alpha_cod    schedule 05.11.2015    source источник
comment
Можете ли вы увеличить размер очереди поиска и посмотреть, что происходит?   -  person Vineeth Mohan    schedule 05.11.2015
comment
Спасибо, Винит, за предложение. Я попытался увеличить пиковое значение пула потоков для поиска с 16 по умолчанию до 40. Это не повлияло на максимальное количество запросов в секунду, которое я мог поддерживать с задержкой менее секунды. Процессор по-прежнему работал на максимальной скорости 30 запросов в секунду, и после этого время отклика уменьшилось.   -  person alpha_cod    schedule 06.11.2015


Ответы (1)


Я знаю, что вы наблюдаете поведение, связанное с процессором, но видите ли вы какие-либо всплески ввода-вывода, когда у вас начинаются проблемы с производительностью?

Если вы храните свой индекс на томах EBS, я не удивлюсь, увидев насыщение ввода-вывода с помощью теста, подобного вашему. Инстансы M3 имеют быстрые локальные (эфемерные) тома SSD, и если вы настраиваете скорость отклика, вам следует убедиться, что ваш индекс хранится локально.

https://www.elastic.co/blog/performance-considerations-elasticsearch-indexing

Я понимаю, что это не говорит напрямую о проблеме с ЦП, но все, что вы можете сделать, чтобы сделать один запрос более отзывчивым (включая фильтрацию и т. д.), повысит вашу пропускную способность.

person Peter Dixon-Moses    schedule 06.11.2015