【发布时间】:2020-11-25 00:06:17
【问题描述】:
我正在使用 AWS 提供的 Elastic Search。
我的网站上有一个注册页面,并且在每次注册时;为新用户创建了一个新索引(供他的工作组稍后使用),这意味着索引的数量在不断增长,(现在达到了 4~5k 左右)。
我的问题是:索引数量是否有性能限制?继续为每个新用户动态创建新索引是否安全(在性能方面)?
【问题讨论】:
标签: elasticsearch
我正在使用 AWS 提供的 Elastic Search。
我的网站上有一个注册页面,并且在每次注册时;为新用户创建了一个新索引(供他的工作组稍后使用),这意味着索引的数量在不断增长,(现在达到了 4~5k 左右)。
我的问题是:索引数量是否有性能限制?继续为每个新用户动态创建新索引是否安全(在性能方面)?
【问题讨论】:
标签: elasticsearch
注意:我没有使用 AWS-Elasticsearch,所以这个答案可能会有所不同,因为他们已经开始使用 Elsticsearch 的开放发行版并且已经分叉了主分支。但是很多原则应该是一样的。另外,这个问题没有明确的答案,它取决于各种因素,但我希望这个答案对思考过程有所帮助。
其中一个因素是每个索引的分片和副本数,因为这将影响每个节点的分片总数。每个分片都会消耗一些内存,因此您必须限制每个节点的分片数量,以便它们不会超过建议的最大 30GB 堆空间。根据this comment 600 to 1000 应该是合理的,您可以根据它扩展您的集群。
此外,您必须监控文件描述符的数量,并确保不会对节点的操作造成任何瓶颈。
HTH!
【讨论】:
如果我没记错的话,唯一的限制是服务器的磁盘空间,但如果你的索引增长太快,你应该考虑拥有更多的副本服务器。我推荐阅读这个页面:Indexing Performance Tips
【讨论】:
索引本身没有限制,但是分片有限制,建议每 GB 堆的分片数量为 20(JVM 堆 - 你可以在 kibana 堆栈监控选项卡上查看),这意味着如果你有 5GB 的 JVM 堆,推荐数量为 100。
请记住,1 个索引可以占用 1 到 x 个分片(1 个主分片和 x 个辅助分片),通常人们有 1 个主分片和 1 个辅助分片,如果是这种情况,那么您将能够使用 5GB 创建 50 个索引堆
【讨论】: