【发布时间】:2016-05-02 09:07:39
【问题描述】:
我有一个具有以下规格的集群(es v 1.5.2):
- 3 个节点,RAM:32GB,CPU 内核:每个 8 个
- 63 个总指数 = 32 个奇迹 + 1 个 kibana + 30 个数据
- 366 个总分片 =(32 个 marvel + 1 个 kibana + 150 个数据)* 1 个副本
- 总共 959,231,444 个文档
- 588.38GB 总数据
- ES_HEAP_SIZE=16g
我已成功删除了大约 200 个空索引并重新启动了集群 - 通常分配需要 1 小时才能完成,但现在已经超过 12 小时,我仍然有 183 个未分配的共享。
另外,我可以看到 node1 只分配了 6 个分片——大部分数据分片在 node2 和 node3 之间是分开的。我尝试重新启动 node1 并仍然遇到相同的情况。为什么不用更多的分片呢?
可能是什么问题,我怎样才能使分配更快并完成?
【问题讨论】:
-
在重新启动节点之前您可能没有disable shard allocation,是吗?这是一个很好的做法,每当您必须重新启动节点以防止不必要的分片重新分配时。
-
我没有,但是为什么现在花了这么长时间?之前它更快......现在我怎样才能让它更快?等待 12 多个小时才能完成共享分配似乎是不正常的。
-
可能是因为在您关闭一个节点并将其重新启动期间,一些新文档已被索引,现在主分片和副本分片不再同步 (read more here)。不幸的是,你现在不能让它更快,你只需要等待它完成。下次只需确保在重启期间正确禁用分片分配,然后重新启用即可。
-
是的,我一直都有新文档索引...所以现在需要 12 多个小时并不奇怪?
-
很遗憾没有。您可以使用命令
curl -XGET localhost:9200/_cat/shards来了解哪些分片仍需要分配。
标签: elasticsearch