Apache Solr обрабатывает сотни тысяч запросов - PullRequest
0 голосов
/ 10 января 2019

У нас есть небольшое приложение для поиска в местном контексте. Для обратных сервисов мы используем Apache Solr 6.6.2 для индексации и хранения данных. Внешний интерфейс на PHP с веб-сервером Apache2.

У нас есть сервер с 48 ядрами и 96 ГБ оперативной памяти, где установлены эти службы. Ожидаемый размер документов в индексе примерно 200 миллионов, и каждый документ может иметь максимум 20 полей. Большинство полей проиндексированы и сохранены.

Ожидаемые одновременные запросы могут составлять сотни тысяч одновременно. Итак, что будет лучшей конфигурацией Apache Solr для этого? Мы запустили Solr с 20 ГБ ОЗУ и стресс-тестами, но он начал снижать производительность почти у 100 пользователей. В чем проблема? Каков оптимальный способ решения этой проблемы.

Мы также протестировали Solr в режиме SolrCloud, но производительность не сильно улучшается. Мы ожидали, что если возникнут какие-то проблемы с памятью, это будет исключением из OOM, но ничего подобного не произошло. Мы только что изменили схему в соответствии с нашими требованиями и изменили память через командную строку. Все остальные настройки являются настройками по умолчанию.

Ниже приведено несколько ссылок, с которыми мы уже справились

  1. https://wiki.apache.org/solr/SolrPerformanceProblems
  2. https://blog.cloudera.com/blog/2017/06/apache-solr-memory-tuning-for-production/

1 Ответ

0 голосов
/ 18 января 2019

Если вы планируете обрабатывать сотни тысяч запросов в секунду, вам потребуется более одного сервера - независимо от его размера. Даже если это только для целей HA / DR. Поэтому я бы порекомендовал использовать SolrCloud и разделить индекс на нескольких машинах и с несколькими репликами.

Помимо этого дьявол кроется в деталях

  1. Как быстро вы хотите, чтобы запросы выполнялись (медиана и 99%). Это поможет вам определить размер процессора и памяти.
  2. Насколько сложны ваши запросы?
  3. Вы используете фильтры? (Требуется больше кучи памяти)
  4. Насколько быстрый доступ к вашему диску?
  5. Будете ли вы добавлять данные в режиме реального времени (что влияет на настройку autoCommit и soft commit

Но в первую очередь вам нужно избавиться от мышления "одной большой коробки".

...