Hello everyone,

I'm running SolrCloud cluster of 5 nodes with 5 shards and 3 replicas per
shard.  I usually see spikes in query performance during high indexing
period. I would like to have stable query response time even during high
indexing period.  I recently upgraded to Solr 7.3 and running with 2 TLOG
replicas and 1 PULL replica.  Using a small maxWriteMBPerSec for
replication and only query PULL replicas during indexing period, I'm still
seeing long query time for some queries (although not as often as before
the change).

My first question is 'Is it possible to control replication of non-leader
like in master/slave configuration (eg: disablepoll, fetchindex)?'.  This
way, I can disable replication on the followers until committing is
completed on the leaders while sending query requests to the followers (or
just PULL replica) only.  Then when data is committed on leaders, I would
send query requests back to only leaders and tell the followers to start to
fetch the newly updated index.

If manual replication control isn't possible, I'm planning to have
duplicate collections and use an alias to switch between the two collection
at different times.  For example: while 'collection1' collection being
indexed, and alias 'search' would point to 'collection2' collection to
serve query request.  Once indexing is completed on 'collection1', 'search'
alias would now point to 'collection1', and 'collection2' will be updated
to be in sync with 'collection1'.  The cycle repeats for  next indexing
cycle.  My question for this method would be if there is any existing
method to sync one collection to another so that I don't have to send the
same update requests to the two collections.

Also wondering if there are other better methods everyone is using?

Thanks much!

Cheers,

-Nguyen

Reply via email to