Solr кеширование с EHCache / BigMemory - PullRequest
6 голосов
/ 03 февраля 2011

Мы внедряем большую настройку Lucene / Solr с документами, превышающими 150 миллионов. Мы также будем ежедневно обновлять небольшое количество документов.

Мой вопрос действительно состоит из двух частей:

Каковы последствия использования другой реализации кэширования в Solr, т.е. EHCache вместо нативного Solr LRUCache / FastLRUCache?

Terracotta анонсировала BigMemory, которая предназначена для использования вместе с EHCache как внутрипроцессный кэш вне кучи. Согласно TC, это позволяет хранить большие объемы данных без издержек GC на JVM. Это хорошая идея для использования с Solr? Это действительно поможет?

Я бы особенно. хотел бы услышать от людей с реальным производственным опытом с настройкой EHCache / BigMemory и / или Solr Cache.

Ответы [ 2 ]

7 голосов
/ 03 февраля 2011

Много мыслей на эту тему.Хотя мой ответ никак не использует EhCache.

Во-первых, я не верю, что документы должны храниться в вашем поисковом индексе.Содержимое поиска должно храниться там, а не весь документ.Я имею в виду, что из вашего поискового запроса должны быть идентификаторы документов.Не содержание самих документов.Сами документы должны храниться и извлекаться из второй системы, вероятно, исходного хранилища файлов, из которого они проиндексированы.Это уменьшит размер индекса, уменьшит размер кэша вашего документа, уменьшит время репликации главного подчиненного (это может стать узким местом, если вы часто обновляете) и уменьшит накладные расходы при написании ответов на поиск.

Далее рассмотрите возможность установки обратногоHTTP прокси перед Solr.Хотя кеши запросов позволяют Solr быстро реагировать, кеш, подобный Varnish, находящемуся перед Solr, еще быстрее.Это выгружает Solr, позволяя ему тратить время на ответы на запросы, которых он раньше не видел.Второй эффект заключается в том, что теперь вы можете использовать большую часть своей памяти для кэширования документов вместо кэшей запросов.Если вы следовали моему первому предложению, ваши документы будут невероятно маленькими, что позволит вам хранить большую часть, если не все, в памяти.

Краткий обзор расчетов конвертов для форматов документов.Я могу легко предоставить 32-битный int как идентификатор для 150 миллионов документов.У меня все еще есть 10-кратный запас для роста документа.150 миллионов удостоверений занимают 600 МБ.Добавьте фактор выдумки для упаковки документов Solr, и вы, вероятно, сможете легко кэшировать все ваши документы Solr в 1–2 ГБ.В наше время легко получить 12ГБ-24ГБ или ОЗУ, и я бы сказал, что вы можете сделать все это на одной коробке и получить невероятную производительность.Не нужно ничего постороннего, такого как EhCache.Просто убедитесь, что вы используете свой поисковый индекс максимально эффективно.

Относительно GC: я не видел много времени, проведенного GC на моих серверах Solr.Большая часть того, что нужно было собрать, - это очень недолговечные объекты, связанные с циклом HTTP-запросов и ответов, которые никогда не выходят из пространства eden.При правильной настройке кэши не имели высокого оборота.Единственные большие изменения произошли, когда новый индекс был загружен и кэши были очищены, но это не происходило постоянно.

РЕДАКТИРОВАТЬ: Для фона я потратил значительное время на настройку кэширования Solr для большой компании, которая продает консолии обслуживает миллионы запросов в день со своих серверов Solr.

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

Я не уверен, что кто-нибудь еще пробовал это.Конечно, мы хотели бы пообщаться с парнями из Solr, чтобы выяснить, насколько это полезноМы могли бы даже оптимизировать его для случая использования.

...