[英]Delta Import Causing Solr Response To Double OR Even Worse
單人版6.0.0
每隔2小時就會出現一次峰值。 即每當增量導入運行時
我的緩存設置是
1. <filterCache class="solr.FastLRUCache"
size="5000"
initialSize="512"
autowarmCount="128"/>
<queryResultCache class="solr.FastLRUCache"
size="10000"
initialSize="512"
autowarmCount="128"/>
<documentCache class="solr.FastLRUCache"
size="100000"
initialSize="10000"
autowarmCount="0"/>
<cache name="perSegFilter"
class="solr.search.LRUCache"
size="10"
initialSize="0"
autowarmCount="10"
regenerator="solr.NoOpRegenerator" />
<enableLazyFieldLoading>true</enableLazyFieldLoading>
<queryResultWindowSize>20</queryResultWindowSize>
<queryResultMaxDocsCached>200</queryResultMaxDocsCached>
<useColdSearcher>false</useColdSearcher>
我的大多數查詢都以CPU為中心,因為它們涉及許多IN查詢和NOT IN查詢。 也有如果得分得分。 假設我的查詢將繼續是cpu cnetric。
救命
我做錯了什么,因為我的增量導入導致了如此高的響應。
另外,由於solr(上次登錄)字段之一頻繁更改,因此增量更新會導致200萬條記錄更新(百萬次更新)。
我的增量進口包括三部分
a)刪除-大約100
b)插入-大約30k
c)更新-約1.9k(一兩列)
對於插入和更新,我正在使用 / update?&overwrite = true&wt = json進行更新
對於已刪除的 stream.body = id:1 stream.body = id:1 ....然后更新
最后使用 / update?commit = true&wt = json
是否有任何優化的方法(DIH更好,但就性能而言未優化)
您具有非常大的緩存和較大的自動熱設置。 因此,當您的導入命中提交時,必須重新打開索引讀取器並重建緩存。 並通過useColdSearcher = false ,在預熱所有這些緩存時,您將獲得響應延遲。
您可以嘗試更改該設置,這會使查詢變慢,但在預熱期間不會阻塞。
您還可以嘗試使用軟提交與硬提交設置,但是請記住,軟提交將使內容在運行時可見,因此,如果先刪除記錄,然后在重新索引的過程中觸發軟提交,則可能會看到部分結果。 與部分更新無關緊要。
正如MatsLindh所說,另一種選擇是離線進行完整索引,然后使用別名或核心交換機制來切換核心。 您甚至可以始終使索引核心處於脫機狀態,甚至可以對其進行索引,甚至可以進行優化,然后將生成的索引復制到生產環境中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.