Elasticsearch高并发写入优化的开源协同经历

导语:在腾讯金融科技数据应用部的全民BI项目里,我们每天面对超过10亿级的数据写入,提高es写入性能迫在眉睫,在最近的一次优化中,有幸参与到了elasticsearch开源社区中。

背景
为了更便捷地分析数据,腾讯金融科技数据应用部去年推出了全民BI的系统。这个系统通过elasticsearch进行基础的统计,超过10亿级的数据量需要尽可能快速地导入到es系统中。即使经过多次的参数优化,我们依然需要几个小时才能完成导入,这是系统此前存在的一大瓶颈。
在这样的背景下,我们开始决定进一步深入es,寻找优化点。

优化前的准备
我们准备了1000万的数据,并在原程序(spark程序写入)上进行了几轮单机压测,得到了一些基本的性能数据。
机器配置:CPU 24核,内存 64G
ES基本配置:
· 堆内存31G
· 其他参数调整包括lock memory,translog.durability调整成async等(更详细的策略可以参见https://github.com/elastic/elasticsearch/issues/45371)
文档数:1000万,字段400个(没有text字段)
写入耗时:26分钟
CPU:80%+

寻找理论值
在往下进入深水区之前,我们需要先回顾一下es本身,es本身是基于lucene基础上设计的分布式搜索系统,在写入方面主要提供了:
· 事务日志和成组提交的机制提高写入性能并保证可靠性
· 提供schema的字段定义(映射到lucene的字段类型)
要进行优化,首先得验证一个问题:lucene的极限速率能到达多少,所以我在我的本机上构建了这样的一个测试。
Macbook pro 15,6核12线程
数据量1000万,每个document 400个字段,10个线程并发(考虑mac cpu Turbo 4.5G ,服务器2.4G(24核),所以只采用10线程并发)
验证写入耗时549s(约10分钟)。
26分钟 —> 10分钟,意味着理论上是可行的。那剩下的就看如何接近这个极限。因为那说明一定是es本身的一些默认特性导致了写入速率无法提升。
下面的介绍忽略了一些相对简单的参数调优,比如

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值