Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon ec2 为什么随着elasticsearch集群的扩展,CPU使用率会不均衡?_Amazon Ec2_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Amazon Ec2,elasticsearch" /> elasticsearch,Amazon Ec2,elasticsearch" />

Amazon ec2 为什么随着elasticsearch集群的扩展,CPU使用率会不均衡?

Amazon ec2 为什么随着elasticsearch集群的扩展,CPU使用率会不均衡?,amazon-ec2,elasticsearch,Amazon Ec2,elasticsearch,我有一个15节点的elasticsearch集群,正在为很多文档编制索引。文件的格式为{“电文”:“一些句子”}。当我有一个9节点的集群时,我可以在所有节点上获得高达80%的CPU利用率,当我将它变成一个15节点的集群时,我在4个节点上获得90%的CPU利用率,而在其余节点上只有约50%的CPU利用率 集群的规格是: 15节点c4.2x大型EC2显示器 15个碎片,没有复制品 所有实例前面都有负载均衡器,通过负载均衡器访问实例 Marvel正在运行,用于监视群集 刷新间隔1s 我可以在9个节点上

我有一个15节点的elasticsearch集群,正在为很多文档编制索引。文件的格式为{“电文”:“一些句子”}。当我有一个9节点的集群时,我可以在所有节点上获得高达80%的CPU利用率,当我将它变成一个15节点的集群时,我在4个节点上获得90%的CPU利用率,而在其余节点上只有约50%的CPU利用率

集群的规格是:

15节点c4.2x大型EC2显示器

15个碎片,没有复制品

所有实例前面都有负载均衡器,通过负载均衡器访问实例

Marvel正在运行,用于监视群集

刷新间隔1s


我可以在9个节点上每秒索引50k个文档,在15个节点上每秒索引70k个文档。我不能做更多的工作吗?

< P>我还不是ES中可伸缩性和负载平衡的专家,但有些事情要考虑:

  • 负载平衡应该是ES中固有的,因此在前端安装负载平衡器实际上可以减轻内部负载平衡的结果。这有点像你的车有一个速度限制,但手动使用刹车,这没有多大意义,因为你的限速器应该已经完成了这项工作,当你输入“手动调节”时,它将无法正常工作。您是否尝试过不使用负载平衡器,而只是使用本机负载平衡来查看它的运行情况
  • 虽然在不同的服务器/分片上有更多的CPU/计算能力,但它也迫使您在每次写入/读取文档时都要经过多个分片,因此如果一个分片可以进行N次计算,那么M个分片实际上就不能进行M*N次计算
  • 在很多情况下,拥有15块碎片可能是杀伤力过大
  • 拥有15个碎片但没有复制是很奇怪/糟糕的,因为如果15台服务器中的任何一台出现故障,您将无法访问整个索引
  • 实际上,您可以在一台服务器上保存多个节点

就存储而言,您的索引大小是多少?

上述设置不用于生产,而是用于基准测试。使用elasticsearch内置的负载平衡使自动替换故障节点变得困难。如果客户机第一次连接到的服务器出现故障,我们需要更改客户机代码以指向新服务器。我试着将文档索引到2个索引,每个索引包含7个碎片,结果是相似的。所以,也许问题不在于碎片太多。我不认为你说的是真的,ElasticSearch应该有一个主节点来“管理它们”,并在客户端节点出现故障时在集群中创建一个新的入口点,在进行复制时还通过其他碎片指向他的旧数据。我认为您不需要重新编译任何东西,以便可以连接到“新服务器”,因为它实际上是同一台服务器,没有节点,应该是透明的。请参阅此链接:考虑在应用程序中指定的节点下降的情况下,新启动的应用程序将无法连接到该节点,从而无法发现该集群并将其下移。使用这种方法,应用程序需要包含一组要连接的硬编码服务器,或者包含一个用于初始发现的服务发现机制。我指的是新启动的应用程序和我们指定的节点关闭的情况。不,ElasticSearch自动分配一个新的主节点和客户端节点,即使“下一行”关闭。显然,如果您的所有服务器都关闭了,它将无法工作,但没有什么可以阻止这一点……新的主服务器将自动选出,这是真的。但是,在应用程序中,我们指定了一个要连接的节点,当应用程序启动时,该节点不可用,则应用程序无法知道主节点位于哪个地址,因为没有与集群的初始通信。