2016-05-31 103 views
1

我只能使用一臺服務器來運行我的應用程序和我的Solr服務器。我想知道在性能和可用性方面是否合理在這臺機器上部署SolrCloud和zookeeper的多個節點(例如使用虛擬機或docker)。由於我容易受到硬件故障的影響,因此我主要關心的是防止軟件故障和性能。在單個服務器上運行多個SolrCloud節點有意義嗎?

因此,不會增加幾個節點(3也許?),將有助於有更高的可用性和更好的性能Solr的服務器?或者它會產生相反的效果?

回答

3

使用一個硬件的多個JVM一般不什麼幫助。如上所述,在一臺機器上使用多個JVM不會降低硬件故障的脆弱性,並且會增加一些認知複雜性,因爲現在您必須記住,僅僅因爲您有三個副本,它並不會這意味着兩個人可能會失敗,除非你在三個人中的每一箇中都特別小心。

在大多數情況下,只需使用額外的碎片在單個JVM/Solr的情況比較簡單,而且實現了保持每個內核的索引大小降至可控水平相同的性能目標。這是SolrCloud的核心功能。

唯一的例外,我知道的是,如果你正在處理的需要非常大的JVM堆索引或使用模式。一個非常大的JVM堆可能導致較高的最大GC暫停時間,而GC調優只能提供很多幫助。在這種情況下,使用多個JVM(每個JVM具有一個副本/分片)​​可以將最糟糕的GC暫停限制爲單個副本所需的暫停。

你還別說動物園管理員,所以這是值得注意的是,ZK是一個有些不同的野獸。您應該單獨託管ZK,您應該始終使用奇數個ZK節點,並且每個物理主機不能多於一個。

+0

謝謝您的回答,您證實了我相信。我沒有一個我認爲很大的索引,所以我更想在這臺機器上進行復制而不是分片。但出於好奇,你認爲什麼是一個非常大的JVM堆? – Thematrixme

+0

我認爲2-8G是「正常的」。但是由於在這種情況下,重要的是GC暫停時間,這實際上更重要的是你可以容忍多少停頓。 – randomstatistic

+0

然後我認爲我們適合「正常」的情況。我不認爲GC暫停時間會很重要。無論如何,非常感謝! – Thematrixme

相關問題