集群调优Elasticsearch.yml尽量只写必要的参数。其他通过API动态设置,参见文档setupelasticsearch-》impotantelasticsearch配置。随着es升级,网络上流传的很多配置参数不再支持基本参数设置cluster.namenode.namenode.master/node.data/node.ingestnetwork.host建议指定内网ip,不要偷懒,设置为0.0.0.0Discovery.zen.ping.unicast.hosts设置为集群其他节点的地址Discovery.zen.minimum_master_nodes一般设置为2path.data/path.log除了上述参数外,根据需要添加其他静态配置参数,动态设置的参数有transient和persistent两种,前者在集群重启后会丢失,后者不会,但是这两个设置都会覆盖elasticsearch.yml的配置不要超过31GB的jvm内存,留一半给操作系统作为文件缓存,具体大小根据存储量估算。对于性能,内存和数据量之间有一个推荐的比率。建议搜索项的比例。1:16以内,日志项的比例为1:48-1:96。假设总数据量为1TB,3个节点1副本,那么每个节点的存储量为666GB,即700GB,每个节点预留20%。存储850GB数据。如果是搜索类别,每个节点的内存大小为850GB/16=53GB,大于31GB31*16=496。即每个节点最多可以存储496GB的数据,也就是至少需要5个节点。如果是日志项目,每个节点的内存大小是850GB/48=18GB,所以写性能三个节点就够了。优化目标是提高写入的吞吐量。eps客户端多线程写入es。在高质量数据建模的前提下,主要是在refreshtranslogflush和降低刷新频率之间做文章。refresh_interval会降低实时性能并增加每次刷新处理的文档数。默认值为1秒。将其设置为-1以禁止自动刷新增加索引缓冲区大小。参数是indices.memory.index_buffer_size。静态参数需要在elasticsearch.yml中设置。降低translog写入磁盘的频率,提高写入效率,但降低容灾能力。index.translog.durability设置为asyncindex.translog.sync_interval设置需要的大小,比如120s,那么translog每120s写入磁盘一次index.translog.flush_threshold_size默认是512mb即当tr??anslog超过大小时,将触发刷新,因此增加大小可以避免刷新。设置副本数为0,写入后增加分片数,保证分片均匀分布在集群上,充分利用资源索引可以在每个节点上分配到5个节点。一个索引有10个主分片和1个副本。上面的值应该设置多少?(10+10)/5=4其实设置5块,在节点下线的时候放置。分片迁移失败。读取优化。高质量的数据建模是优化的基础。将需要通过script脚本动态计算的值进行改进,准备作为字段存储在文档中,尽量让数据模型接近业务模型,设置分片数量,es性能是线性膨胀。只需要衡量一个shard的性能指标,然后根据需求计算需要多少个shard。您需要5个分片来测试单个分片以构建与生产相同配置的单节点集群。设置单分片零拷贝索引写入实际生产数据进行测试,获取性能指标。对数据进行查询请求,获取读取性能指标。压力测试工具是可选的。esrally搜索场景单个shard大小不超过15GB,日志场景单个shard不超过50GB。分片越大,查询性能越低。这个时候只要估算总索引大小除以单个分片的大小就可以得到分片的数量
