сокращение времени выполнения запросов SOLR для запросов, выполняемых сразу после индексации



У меня есть SOLR с 9 ядрами.
Одно из ядер содержит около 1 000 000 документов. (Размер~1 ГБ)



После завершения фиксации 100 документов к этому ядру, мои следующие 20 -40 запросов ко всем другим ядрам в SOLR становятся очень медленными (от 3 до 8 секунд )



Я добавляю ~100 документов каждые 10 минут с помощью обработчика импорта данных, а затем фиксирую ( без оптимизации ) индекс.




  1. есть ли способ сократить время выполнения запросов сразу после индексации ?

  2. может ли это быть аппаратное обеспечение проблема с учетом того, что все остальные ядра выполняют запросы медленно, или проблема в том, что у меня много ядер.


У меня в среднем 20 запросов в секунду ко всем ядрам.
Я использую Jetty с SOLR
У меня есть mergeFactor = 10



<mergeFactor>10</mergeFactor>


Я установил счетчик автоматического оружия для кэша



<filterCache
class="solr.FastLRUCache"
size="1048576"
initialSize="131072"
autowarmCount="943718"/>

<documentCache
class="solr.FastLRUCache" cleanupThread="true"
size="131072"
initialSize="117965"
autowarmCount="117965" />


У меня есть 50 запросов для автоматического включения нового поисковика, как для newSearcher, так и для firstSearcher.



<listener event="newSearcher" class="solr.QuerySenderListener">
<arr name="queries">
<str name="q">cake+boss</str><str name="facet">true</str><str name="facet.field">Category</str></lst>
...// 50 warm-up queries
</arr>
</listener>
//the same for firstSearcher
370   1  

1 ответ:

Вы прогреваетесь. Это единственный способ уменьшить время запроса сразу после фиксации. Возможно, вам придется поработать над разогревом, чтобы получить нужные документы/запросы/фильтры в кэше, но вы уже идете в правильном направлении.

Я предполагаю, что это опрокидывание индекса из-за фиксации в сочетании с предварительным прогревом кэша поглощает весь ваш процессор и IO. В результате ваши другие ядра не получают достаточно ресурсов для быстрого реагирования. Во время фиксации ваша память использование будет быстро расти, так как есть период времени, когда есть 2 копии индекса в Solr. В зависимости от использования вашей памяти, вы можете даже поменять местами, что будет невероятно разрушительно для времени запроса.

Сделайте немного профилирования процессора и памяти во время фиксации. Убедитесь, что вы не меняетесь местами. Смотрите, если ядра процессора привязаны. Вам, скорее всего, нужно бросить больше оборудования на эту проблему или рассмотреть возможность распространения ваших ядер на разные машины, чтобы они не пострадали.

Comments

    Ничего не найдено.