簡體   English   中英

Delta導入導致Solr響應加倍甚至更差

[英]Delta Import Causing Solr Response To Double OR Even Worse

單人版6.0.0

增量導入時出現尖峰-每2小時

每隔2小時就會出現一次峰值。 即每當增量導入運行時

  1. 響應時間加倍
  2. 平均CPU負載翻倍,如果達到接近小時,則甚至達到10倍。

我的緩存設置是

 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。

救命

我做錯了什么,因為我的增量導入導致了如此高的響應。

  • 索引大小:2GB
  • 服務器:4
  • 服務:每小時10萬

另外,由於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM