我有一個帶9個內核的SOLR。 其中一個核心擁有大約1 000 000個文檔。 (〜1GB大小)減少索引後正確執行的查詢的SOLR查詢時間
整理提交100個文檔到這個核心後,我的下一個20個-40查詢到SOLR所有其他內核變得非常慢(3-8秒),
我補充〜100個文件每10分鐘使用數據導入處理程序,然後提交(不優化)索引。
- 有沒有一種方法可以減少索引後執行的查詢的查詢時間?
- 考慮到所有其他內核執行查詢的速度較慢,或者存在多個內核的問題,是否可以是硬件問題?
我每秒平均有20個查詢到所有內核。 我用碼頭與SOLR 我有合併因子= 10
<mergeFactor>10</mergeFactor>
我已經設置autowarm計數緩存
<filterCache
class="solr.FastLRUCache"
size="1048576"
initialSize="131072"
autowarmCount="943718"/>
<documentCache
class="solr.FastLRUCache" cleanupThread="true"
size="131072"
initialSize="117965"
autowarmCount="117965" />
我有50個查詢autowarm一個新的搜索,對於newSearcher和firstSearcher。
<listener event="newSearcher" class="solr.QuerySenderListener">
<arr name="queries">
<str name="q">cake+boss</str><str name="facet">true</str><str name="facet.field">Category</str></lst>
...// 50 warm-up queries
</arr>
</listener>
//the same for firstSearcher
據我所知,交換髮生在沒有足夠內存的情況下爲同一個核心擁有兩個主動搜索器。如何通過分析內存使用情況來檢查我是否在交換?現在我有-Xmx 5GB - 這是一個約束還是隻有機器內存是一個約束? – Dorin 2012-02-03 19:14:18
我在談論如果你超過物理內存,你的操作系統頁面交換內存到磁盤。 Vmstat會顯示這一點。但是,如果您推動JVM堆限制,這也可能會導致問題,因爲您的機器將花費相當多的時間進行垃圾收集。 – rfeak 2012-02-03 20:50:45
這裏的另一個想法是,如果你的查詢量還可以減少你的maxWarmingSearchers。留意有關碰到maxWarmingSearchers限制的相關錯誤。 – 2012-02-03 22:15:44