ES踩坑——提高写入性能之合理安排加副本和删索引的时机

问题表现是:

ES集群的cpu和负载都非常低,几乎与无数据写入时一致,indexing rate也很低,基本在2000-5000左右;

但是此时有6个大数据量的任务在并行往ES集群各自的索引写入,但是耗时都严重变长,比如正常1h运行完毕的写入任务可以变成14h才运行完毕。

 

问题解决如下:

正常在ES写入时,会把索引副本关闭,写完后再加副本。

但是当多个数据源,同时并行往一个ES集群的多个索引写入数据时,如果流程设计为:

数据源写入ES -> 写入完毕 -> 加副本、删除过期索引;

多个任务并行时,依据任务执行完毕顺序先后,先执行完毕的任务加副本和删索引,会影响到后面正在运行的任务的写入性能。

 

当加副本时,ES主分片会进行复制,此时会占用写入性能,导致写入速率降低;

当删过期索引时,会产生大量GC,如果写入任务本身数据量很大,本身GC很高,此时删索引就不太合适,也会影响写入性能。

 

所以正确的做法是:

等所有的任务都写入各自索引完毕后,再统一加副本和删除过期索引。

测试发现,采用这个操作后,在集群没有关闭负载均衡的情况下,写入速率很明显上来了,之前10h左右的很多任务,直接40min以内入库完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值