2016-02-26 10 views
17

Utilizziamo Apache Solr (3.1.0) per indicizzare molti articoli scritti per più siti. Abbiamo una configurazione master/slave (configurazione di replica nella parte inferiore), dove il server 1 indicizza gli articoli e il server 2 replica l'indice. Lo slave dovrebbe interrogare il master ogni 60 secondi, ma invece possiamo vedere da 10 a 75 chiamate consecutive da /replication quasi ogni volta.Apache Solr: lo slave si replica più di 10 volte ogni volta che esegue il polling (commit eccessivo?)

Ogni nucleo Solr (${solr.core.name} nella configurazione slave) rappresenta un sito diverso. Le chiamate /replication che vedo di più sono legate al sito più grande. Uno dei core ha ricevuto solo 1 chiamata al minuto, e sono stato in grado di riprodurlo lì dopo aver chiamato lo update?commit=true un paio di volte, quindi questo mi porta a pensare che sia legato alla quantità di commit che il master esegue.

Quindi la mia domanda è: come posso impedire allo slave Solr di replicare l'indice decine di volte e costringerlo a replicare solo una volta al minuto? Ho provato a giocare con il parametro commitReserveDuration nella configurazione principale, ma non vedo alcuna differenza.

maestro replica config:

<requestHandler name="/replication" class="solr.ReplicationHandler" > 
    <lst name="master"> 
    <str name="replicateAfter">commit</str> 
    <str name="replicateAfter">startup</str> 
    </lst> 
</requestHandler> 

config replica slave:

<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> 
+0

Vorrei provare a disabilitare pollInterval (specificare no pollInterval) ed eseguire la replica tramite la chiamata api attivata da un processo cron. Aiuta? https://wiki.apache.org/solr/SolrReplication?action=AttachFile&do=get&target=replication.png –

+0

Grazie per la risposta. Ho provato questo e chiamando '/ replication? Command = fetchindex' una volta fa scattare molte chiamate'/replication' sul master ... Non vedo alcuna differenza tra questo e mantenendo pollInterval nella config. Ad essere onesti, questo potrebbe essere un comportamento perfettamente normale, ma non riesco a trovare alcun documento che lo descriva. –

+0

Questa era solo un'idea per tenere traccia del problema. Scusa, non posso aiutarti ulteriormente. –

risposta

1

nella configurazione specificata replica dopo come commesso, quindi in caso se si è l'emissione di impegnarsi dal codice molto frequentemente allora attiverà la replica, quindi suggerirei di cambiare per ottimizzare invece di commettere. Questo dovrebbe risolvere il tuo problema. Here è il collegamento che fornisce maggiori dettagli sulle impostazioni di replica dopo.

+0

Grazie per il tuo commento. Quando cambio commit per ottimizzare, lo slave sembra essere fuori sincrono con il master per 5+ minuti, il che è troppo lungo. Grazie però, cercherò di trovare un modo per chiamare l'ottimizzazione dal codice e vedere se funziona. –

Problemi correlati