Запуск Solr в памяти? - PullRequest
       5

Запуск Solr в памяти?

13 голосов
/ 26 октября 2011

Однажды ночью я выпил пинту в местном баре и завел разговор с парнем рядом со мной. Как оказалось, он был не только коллегой-разработчиком, но и много использовал Solr. Когда мы поговорили о том, какой классный Солр, он упомянул кое-что, что я так и не смог выяснить. Он сказал: «Чтобы заставить Solr действительно работать, нужно запустить его в памяти».

Увы, я не получил его имя и, несмотря на поиск ответа, никогда не нашел ничего конкретного. Как вы думаете, что он имел в виду под этим?

Ответы [ 4 ]

10 голосов
/ 01 августа 2013

Для тех, кто хочет сделать это с целью ускорения испытаний:

Если у вас есть отдельное ядро ​​для тестового индекса, вы можете изменить атрибут directoryFactory в solrconfig.xml на:

<directoryFactory name="DirectoryFactory" class="solr.RAMDirectoryFactory"/>

Излишне говорить, что не стоит хранить только производственные данные в памяти.

1 голос
/ 03 февраля 2016

Возможно, он имел в виду наличие достаточного дискового кэша для хранения всего индекса. Это широко рекомендуемый способ обеспечения быстрых небольших случайных операций ввода-вывода (и объемной записи при индексации), что важно для хорошей производительности Solr: https://wiki.apache.org/solr/SolrPerformanceProblems#OS_Disk_Cache

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

1 голос
/ 26 октября 2011

Запускать SOLR в памяти действительно бессмысленно.SOLR предназначен для веб-сервера, где клиенты могут делать запросы, используя API RESTless.Вы можете настроить репликацию, чтобы компенсировать высокий трафик.SOLR оборачивает Lucene.Если вы хотите запустить SOLR в памяти, тогда вы в основном запускаете Lucene в памяти.Поэтому я бы предложил просто запустить экземпляр Lucene и сохранить диск в памяти.Мне любопытно узнать, что думают другие, но запуск SOLR в памяти действительно не предназначен для использования.В Lucene есть Directory , реализованный в памяти, который называется RAMDirectory .

Некоторое время назад был похожий вопрос о запуске встроенного режима SOLR, но через некоторое время Apache устарелвстроенный сервер, потому что для этого и был Lucene.

0 голосов
/ 03 февраля 2016

Несмотря на то, что скорость является хорошей причиной для запуска RAMDirectory, вам в конечном итоге придется сохранить каталог на диске.Вы, вероятно, могли бы написать простую обертку, чем обернуть RAMDirectory и FSDirectory и отразить вызовы обоих.Все запросы будут поступать из RAMDirectory, но изменения будут применяться к обоим.

Но еще одна очень веская причина сделать это - шифрование в покое.Шифрование данных - отстой, если вы действительно хотите его использовать, потому что вам приходится платить за расшифровку запроса.Использование зашифрованных данных в состоянии покоя нецелесообразно, но если вы расшифровали содержимое в памяти и кэшировали его, это было бы очень быстро.

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