2013-12-17 21 views
0

所以我有三個Solr服務器。一個致力於索引,兩個致力於搜索。他們有主從關係。不良索引會使查詢非常慢?

約有70百萬個文件,大小約爲70GB。大約有30個細分市場。

在這裏,我們有一些像上下文搜索,用戶可以將文本的一個長長的清單,約150字爲例,他會得到其中有些事情要與他把文本文件。

當我在具有相同規格(8核心,16GB)的測試服務器中嘗試它時,結果非常快(是的,我丟棄了高速緩存並重新啓動了Solr)。首先搜索需要大約2秒,而第二次搜索與另一個查詢需要大約200ms。

問題是,當我在生產中嘗試它。搜索花費了大約6秒鐘的時間,在內存或CPU上沒有真正可見的負載(使用htop進行監控)。

我們嘗試了很多東西,我們無法取得數字。然後,我們停止生產中的從站複製,並將索引複製到測試服務器。測試服務器也很慢(第一個26secs,第二個26秒)。

這是否意味着索引不好?因爲在測試服務器中我們總是使用新的索引索引。有沒有辦法讓索引保持良好的狀態而沒有新的完全重新索引?

//附加信息 - 對於堆大小,我們爲它預留了6Gb,其餘部分用於OS/hd緩存。 我們嘗試過的方法是優化搜索方法,如嘗試使用脈衝發佈格式,常用術語查詢,更好的語言檢測和停用詞等。

+0

有幾件事情可以做,但正如你所說:「我們嘗試了很多東西,我們不能減少數字。」你詳細的嘗試了什麼?你分配給Solr的堆有多大?你是否嘗試[優化](http://wiki.apache.org/solr/UpdateXmlMessages?#A.22commit.22_and_.22optimize.22)索引?你的查詢如何?所有查詢都很慢嗎? – cheffe

+0

我們正在嘗試優化,但我們仍在等待測試服務器中的更多高清。但是,優化是一件非常重要的事情,它實際上創造了一個新的指數。我只是想知道是否有任何方法來保持索引'好'。只有上下文查詢(大約150字)纔會很慢。 – Rowanto

+1

您可以在黑暗中進行拍攝,但是如果您需要可靠的答案,只需掛鉤探查器並在此處或在Lucene/Solr用戶論壇中發佈熱點。 – mindas

回答

1

無法爲您提供100%的工作解決方案,對於我以前的做法是:cat $SOLR/<collection>/solr/*/data/* > /dev/null,這將有助於在solr到達之前將大部分數據文件預加載到內存中。我認爲它在測試服務器上運行速度很快的原因在於,它是您索引的位置,操作系統內存「知道」您的數據文件。在將文件複製到生產中時,Solr需要在查詢到達時使其處於延遲加載模式。

這可能不適合您,請試試看。另一件你可以使用的是SolrMeter來檢查發生了什麼。讓我知道這是否有幫助。

+0

對不起,我們在測試服務器上總是使用'echo 1>/proc/sys/vm/drop_caches'丟棄硬盤緩存,但它仍然很快。但是你說得對,如果操作系統「知道」這些文件,它會變得更快。 – Rowanto