是时候用 ES 拯救发际线啦

elasticsearch 在集群shard个数达到15000以上的时候,create/delete index 慢

Elasticsearch | 作者 hooooly | 发布于2017年03月27日 | 阅读数:6944

在一个集群上一直创建index,比如分30个shard,当shard数达到10000个以上create/delete index会很慢。求大神给解答下。
已邀请:

pqy

赞同来自: ScriptShi

一个集群可以容纳的索引的数量(准确的说是shard数据量)和shard的大小以及数据结点的数量和硬件配置有关,因此不可能有一个统一的标准。 最好通过监控数据来做容量管理,如果一个数据结点的heap压力很大,load过高导致查询或者写入慢,就应该考虑扩容加节点了。理论上集群可以容纳的索引数据量可以通过增加数据结点来无限水平扩展,但实际集群的元信息是无法水平扩展的,因为ES在设计上是在每个节点缓存了集群元信息的全量拷贝。当集群规模较大的时候(节点比较多,shard比较多,字段比较多)的情况下,更新元信息的开销也随之增大。直观上的感受就是创建/删除索引,或者update setting/mapping一类的操作比较慢,一次操作耗时可能达到数秒。    
 
 

hanbj

赞同来自: ScriptShi

es的元数据操作最后很多都会走allocation模块,allocation模块比较笨重,性能不高,两点可以优化:
1、修改如下配置,防止遍历所有分片
PUT _cluster/settings
{
  "transient": {
    "cluster": {
      "routing": {
        "allocation.disk.include_relocations": false
      }
    }
  }
}
 
2、修改源码:DanglingIndicesState --> clusterChanged方法,因为在检查僵尸索引时,会遍历该节点的所有分片目录,修改成定时异步处理
 

 

zqc0512 - andy zhou

赞同来自: ScriptShi

元数据过多了,这玩意是影响master性能的。
 

要回复问题请先登录注册