2012-03-23 51 views
12

在單臺機器上運行多個Solr碎片是否可以提高性能?我期望Lucene是多線程的,但它似乎並沒有在我的服務器上使用多於​​16個物理內核的單個內核。我意識到這是依賴於工作負載的,但任何統計數據或基準測試都會非常有用!在單臺機器上執行多個Solr碎片可以提高性能嗎?

+2

昨天你有沒有讀過黑客新聞? http://carsabi.com/car-news/2012/03/23/optimizing-solr-7x-your-search-speed/ – aitchnyu 2012-03-25 06:13:01

+3

是的,我寫道:)我希望其他人有一些我可以比較的統計數據儘管 – cberner 2012-03-25 18:18:15

+0

@cberner這對索引性能來說是否正確,或者是完全不同的動物?我需要頻繁更新我的索引和用戶內容,並期待加快速度。 – 2012-11-21 18:00:29

回答

11

我跑了一些benchmarks of our search stack,發現增加更多的Solr碎片(在一臺機器上,有16個物理內核)的確提高了大約8個碎片的性能(我得到了6.5倍的加速)。這是一個大約150萬個文檔的索引,運行復雜的範圍查詢。

因此,當針對單個索引運行查詢時,Solr似乎沒有利用多個物理內核。

+0

由於您的索引適合I/O緩存,因此分片改善了延遲。但是這不應該是一個普遍的建議:更大的索引會發生什麼?在實時環境中?而且,你不會一直測量,當併發級別增加時會發生什麼?你能否再次做你的實驗,但有更多的線程發送查詢到Solr? (20例如) – jpountz 2012-03-24 23:11:08

+0

我不知道一個更大的索引,但對於實時搜索,我會除了索引性能改善,因爲寫入將分散在多個分片。我會在下週嘗試並進行一些吞吐量測試。我不希望太多差異,因爲分片開銷<20% – cberner 2012-03-25 02:15:49

0

如果您目前有一個碎片一個單選框,然後分裂這個碎片分成幾個碎片:

  • 有可能惡化的吞吐量,
  • 可以改善延遲,通過並行查詢執行。

,因爲這取決於執行查詢是否是CPU或I/O限制,我不能爲你提供的統計數據或基準:如果查詢執行已經是I /綁定在單一框,然後分裂碎片分成幾個Ø碎片甚至會惡化吞吐量。您需要測試自己,只需拍攝一張生產日誌,並嘗試在兩個場景中重播。

+0

看到我的答案上面,它確實似乎提高性能,甚至顯着。 – cberner 2012-03-24 22:19:09

相關問題