Масштабирование Vespa за 500 QPS для поиска - PullRequest
4 голосов
/ 08 февраля 2020

Мы создали собственный поисковик. Размер нашего документа составляет около 400 000. Задержка сохраняется менее чем за 100 мс, но когда мы выполняем нагрузочное тестирование, оно не дает QPS более 80, а время ожидания также увеличивается до 4-5 секунд. Мы используем кластер из 9 узлов (c5.2xlarge - 8vcpu и 16 ГБ ОЗУ) в групповом распределении (3 группы размера 2 с репликацией 3 и копиями с возможностью поиска 3). Мы пробовали разные дистрибутивы, но не могли набрать скорость. Мы пробовали с разными значениями параметров настройки даже для больших вычислительных экземпляров

<requestthreads>
   <search>64/128</search>
   <persearch>1</persearch>
   <summary>16</summary>
</requestthreads>

Каким должен быть лучший подход, чтобы найти узкое место? С таким большим кластером мы сможем достичь 500 QPS для 500 000 записей.

Ответы [ 2 ]

4 голосов
/ 09 февраля 2020

Прочтите это, если вы еще этого не сделали: https://docs.vespa.ai/documentation/performance/sizing-search.html

Вам необходимо измерить, чтобы определить, сколько ресурсов потребляют ваши запросы. Это должно дать вам представление о том, какую пропускную способность вы можете обрабатывать и где имеет смысл настраиваться. Затем вы можете запустить нагрузочные тесты при различных нагрузках, чтобы проверить поведение и найти максимальную пропускную способность. При 80 qps эта система перегружена, что не очень полезно для наблюдения за системой, потому что вы не хотите работать при перегрузке в рабочей среде.

Если вы хотите, вы можете развернуть свое приложение на https://cloud.vespa.ai вместо того, чтобы управлять им самостоятельно, тогда мы могли бы дать вам лучшее понимание, глядя на это с нашей стороны.

2 голосов
/ 10 февраля 2020

Если вы пробовали разные варианты распространения документов с содержимым, как описано в документации по размеру (1 *), без прохождения 80 QPS, я подозреваю, что вы связаны сетью между вашим клиентом для тестирования производительности и контейнерами поиска Vespa. Например, если у вас есть документы размером 400 КБ и вы возвращаете их все как часть сводки по умолчанию, вы будете насыщать сетевой интерфейс 1 Гбит / с со скоростью 31 QPS с 10 ударами по умолчанию как

  • 1 Гбит / с = 125 000 КБ / с.
  • 10 соответствует 400 КБ = 4000 КБ на результат
  • 125 000 КБ / с / 4000 КБ / запрос = максимум 31 запрос / с на скорости 1 Гбит / с.

Передача заголовка «Accept-Encoding: gzip» включит сжатие между вашим клиентом и контейнерами. Внутренняя связь внутри Vespa уже сжата (если достаточно большая). Вы также можете включить явную сводку документа, которая содержит меньше данных (2 *).

(1 *) https://docs.vespa.ai/documentation/performance/sizing-search.html

(2 *) https://docs.vespa.ai/documentation/document-summaries.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...