首页 > 解决方案 > 大单片 vs 多片

问题描述

ElasticSearch 分片有两个最佳实践:

就我而言,它们有些争议。更具体地说,假设索引大小为 2 TB,并且有 10 个节点。我应该配置多少个分片:

选项 1:10 个分片,每个分片 200GB

或者

选项 2:40 个分片,每个分片 50GB

查询延迟性能哪个更好?

标签: performanceelasticsearch

解决方案


任何被认为是“最优”的东西通常只是理论上的最优,在实践中你需要做出一些权衡。大多数时候,您肯定希望每个主分片至少有一个副本(容错),因此每个节点至少有 2 个分片(除非您有 5 个主分片 @ 每个 400GB)。这么多的最优性,让我们脚踏实地......

你没有提到每个节点的堆数量,但由于你不应该超过每个节点 30.5GB 的堆限制,你应该清楚地倾向于拥有最多约 50GB 数据的分片。50 个分片 @40GB 也可以。

我不会尝试 200GB 分片,因为那可能太大了。我也不会尝试拥有 1000 个 2GB 分片,因为分片太多。

最终,这取决于您的用例和硬件。您的索引是否正在承受繁重的搜索负载,还是主要处理索引请求?您的集群需要处理多少并发搜索/索引请求?知道的最好方法是测试所有这些,但如果没有更多信息,第二个选项显然比第一个更好。并且不要忘记每个主分片也可能需要一个副本,这将使您的存储需求翻倍(即每个节点 400GB)


推荐阅读