У нас есть небольшое приложение для поиска в местном контексте. Для обратных сервисов мы используем Apache Solr 6.6.2 для индексации и хранения данных. Внешний интерфейс на PHP с веб-сервером Apache2.
У нас есть сервер с 48 ядрами и 96 ГБ оперативной памяти, где установлены эти службы. Ожидаемый размер документов в индексе примерно 200 миллионов, и каждый документ может иметь максимум 20 полей. Большинство полей проиндексированы и сохранены.
Ожидаемые одновременные запросы могут составлять сотни тысяч одновременно. Итак, что будет лучшей конфигурацией Apache Solr для этого? Мы запустили Solr с 20 ГБ ОЗУ и стресс-тестами, но он начал снижать производительность почти у 100 пользователей. В чем проблема? Каков оптимальный способ решения этой проблемы.
Мы также протестировали Solr в режиме SolrCloud, но производительность не сильно улучшается. Мы ожидали, что если возникнут какие-то проблемы с памятью, это будет исключением из OOM, но ничего подобного не произошло. Мы только что изменили схему в соответствии с нашими требованиями и изменили память через командную строку. Все остальные настройки являются настройками по умолчанию.
Ниже приведено несколько ссылок, с которыми мы уже справились
- https://wiki.apache.org/solr/SolrPerformanceProblems
- https://blog.cloudera.com/blog/2017/06/apache-solr-memory-tuning-for-production/