2016-05-31 104 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

相关问题