Hi Nick,

What does your response time look like if you use
shards.preference=replica.type:PULL,replica.location:local as a query
parameter? Basically route all queries to PULL replicas only.

LMK

Tim

On Fri, Jun 11, 2021 at 6:55 AM Nick Vladiceanu <vladicean...@gmail.com> wrote:
>
> hello,
> I’m facing some performance issues when moving from NRT replica types to TLOG 
> + PULL. We’re constantly indexing new data and heavily querying (~2k rps).
>
> - index size is ~ 2.5Gi;
> - number of docs ~4.6M;
> - 2 shards;
> - 7 cores and 14Gi of memory
> - 30 instances
> - JVM Heap is 12Gi
>
> When running on NRT only, the response time in avg is ~150ms p99 and 40ms 
> p95. When changing to TLOG (6 tlog replicas) + 24 PULL, the response time 
> grows to ~350ms p99 and 120ms p95.
>
> Here are some fragments from our solrconfig:
>
>
> >     <updateHandler class="solr.DirectUpdateHandler2">
> >         <updateLog>
> >             <str name="dir">${solr.data.dir:}</str>
> >             <int 
> > name="tlogDfsReplication">${solr.ulog.tlogDfsReplication:3}</int>
> >         </updateLog>
> >
> >         <autoCommit>
> >             <maxTime>${solr.autoCommit.maxTime:60000}</maxTime>
> >             <maxDocs>${solr.autoCommit.maxDocs:10000}</maxDocs>
> >             <openSearcher>true</openSearcher>
> >         </autoCommit>
> >
> >         <autoSoftCommit>
> >             <maxTime>${solr.autoSoftCommit.maxTime:300000}</maxTime>
> >         </autoSoftCommit>
> >     </updateHandler>
>
> >       <query>
> >         <maxBooleanClauses>1000</maxBooleanClauses>
> >         <filterCache class="solr.CaffeineCache"
> >                      size="${filterCache.size:32768}"
> >                      initialSize="${filterCache.initialSize:32768}"
> >                      autowarmCount="20%"/>
> >
> >         <queryResultCache class="solr.CaffeineCache"
> >                           size="${queryResultCache.size:32768}"
> >                           
> > initialSize="${queryResultCache.initialSize:32768}"
> >                           autowarmCount="0%"/>
> >
> >         <documentCache class="solr.CaffeineCache"
> >                        size="${documentCache.size:150000}"
> >                        initialSize="${documentCache.initialSize:150000}"
> >                        autowarmCount="0%"/>
> >
> >         <enableLazyFieldLoading>true</enableLazyFieldLoading>
> >         <useFilterForSortedQuery>true</useFilterForSortedQuery>
> >
> >         <queryResultWindowSize>160</queryResultWindowSize>
> >         <queryResultMaxDocsCached>300</queryResultMaxDocsCached>
> >
> >         <listener event="newSearcher" class="solr.QuerySenderListener">
> >         </listener>
> >         <listener event="firstSearcher" class="solr.QuerySenderListener">
> >         </listener>
> >
> >         <useColdSearcher>false</useColdSearcher>
> >         <maxWarmingSearchers>8</maxWarmingSearchers>
> >     </query>
>
> One of my assumption was to reduce the maxWarmingSearchers and to increase 
> the autoCommit maxTime, since the softCommit isn’t available anymore in TLOG 
> replicas. Is that valid?
>
> I couldn’t find any documents with the differences/considerations we need to 
> take into account between NRT and TLOG, could you please help? Thanks a lot 
> in advance. Please let me know if there is anything else required.
>
> Best regards,
> Nick Vladiceanu

Reply via email to