Мы используем Apache Solr (3.1.0) для индексации множества статей, написанных для нескольких сайтов. У нас есть настройка ведущий/ведомый (репликация конфигурации внизу), где сервер 1 индексирует статьи, а сервер 2 реплицирует индекс. Ведомый должен опросить мастер каждые 60 секунд, но вместо этого мы можем видеть от 10 до 75 последовательных вызовов /replication
почти каждый раз.
Каждое ядро Solr (${solr.core.name}
в подчиненной конфигурации)
представляет собой другой сайт. /replication
звонки, которые я вижу, больше всего привязаны к самому большому сайту. Один из ядер получил только один вызов в минуту, и я смог воспроизвести его там, несколько раз позвонив update?commit=true
, так что это заставляет меня думать, что это связано с количеством коммитов, выполняемых мастером.
Итак, мой вопрос в том, как мне заставить slr-сервера Solr тиражировать индекс десятки раз и заставить его реплицировать только один раз в минуту? Я пробовал играть с параметром commitReserveDuration
в главной конфигурации, но я не вижу никакой разницы.
главная репликация конфигурации:
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="master">
<str name="replicateAfter">commit</str>
<str name="replicateAfter">startup</str>
</lst>
</requestHandler>
Конфигурация подчиненной репликации:
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="slave">
<str name="masterUrl">http://${solr.master.server}/search/${solr.core.name}/replication</str>
<str name="pollInterval">00:00:60</str>
</lst>
</requestHandler>