前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch 写入优化探索:是什么影响了refresh 耗时?

Elasticsearch 写入优化探索:是什么影响了refresh 耗时?

作者头像
铭毅天下
发布2023-12-26 14:51:00
2660
发布2023-12-26 14:51:00
举报
文章被收录于专栏:铭毅天下铭毅天下

1、问题背景:

数据写入后,refresh耗时过长,能达到1s-5s。

想通过测试,探索确认影响refresh的因素,比如:写入操作是新增还是更新,deleted文档占比是否有影响,是否有其他索引配置,等等。

2、测试过程全记录

旧索引:24主分片,1副本,经过长期forcemerge,最大segmeng 33gb,镜像后deleted占比 8%左右。

noforcemerge 索引:24主分片,1副本,reindex后最大segmeng 5gb,deleted占比0%。

nosoftedelete 索引:关闭softdelete策略,24主分片,0副本,reindex后最大segmeng 5gb,deleted占比0%。

旧索引更新

旧索引新增

旧索引forcemerge后新增(带少量更新)

noforcemerge索引更新

旧索引低更新

noforcemerge索引低更新

nosoftedelete索引更新

时间段

2023-10-12 21:30:00至2023-10-13 15:00:00

2023-10-13 15:55:00至2023-10-13 16:10:00

2023-10-13 20:40:00至2023-10-13 22:00:00

2023-10-16 10:40:00至2023-10-17 11:00:00

2023-10-17 16:20:00至2023-10-17 17:15:00

2023-10-17 17:20:00至2023-10-17 18:30:00

2023-10-19 11:00:00至今

写入速度

2k/s

2k/s

2k/s

2k/s

2k/s

2k/s

2k/s

deleted占比增长

最大 32%,最小 8%

22%左右

0%-2%

0%-9%

1.5%-2%

7%-6%

0%-8%

refresh耗时

最大12s,最低3s

200ms-400ms

300ms-800ms

1s-3s

50ms-250ms

500ms-1.5s

200ms-300ms

refresh_external耗时

最大12s,最低3s

200ms-400ms

300ms-800ms

1s-3s

50ms-250ms

500ms-1.5s

基本无

cpu使用

50%-100%

50%-100%

50%-100%

50%-100%

30%-60%

30%-60%

10%-40%(查询条件优化)

3、查询测试

旧索引查询

noforcemerge索引查询

时间段

10-17 15:06:00 - 10-17 15:42:00

查询qps

100/s

查询耗时

平均45ms左右

cpu使用

10%-30%

4、观测到的现象

1. 纯更新操作会导致明显的 refresh 高耗时。

2. 降低索引中 deleted文档的占比也能降低refresh的高耗时。

3. noforcemerge 索引的更新测试中,通过es热线程的抓取,refresh 的出现降低了(但依旧是100%),merge线程出现增多了不少。

4. soft delete 关闭的索引,refresh 耗时明显下降了,并且与 deleted 文档占比明显无关联。

5、测试初步结论

5.1 结论1. large segment 策略对索引日常使用无明显变化。

large segment 策略的修改对索引日常的查询和写入没有额外的资源占用。

同时也达到了预期自动清理deleted文档的效果。

5.2 结论2. refresh 影响因素。

  • 1.soft delete:soft delete模式是否开始直接影响refresh的耗时。关闭soft delete可降低refresh耗时,但不推荐。
  • 2.写入操作类型:开启 soft delete后,数据更新操作会明显增加 refresh耗时,而单纯的新增数据则没有太多的refresh耗时。
  • 3.deleted 占比:deleted 文档占比越高,refresh耗时越大。

6、扩展:关于soft delete

6.1 soft delete 用途

用于分片间数据同步和恢复,属于 ES 分布式基础实现。

具体内容详见:

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/index-modules-history-retention.html

soft delete详解:默认为开启,只能在索引创建时设定,不可通过开关索引操作修改。官方后期准备把这个参数去掉,这也是不建议修改soft_delete参数的一个原因。

6.2 soft delete对 refresh 的影响

在测试过程以及社区文档中,均发现了soft_delete索引下 update 操作增加了refresh耗时的现象。

https://mp.weixin.qq.com/s/_l8JAtqK_NOSP8b7OqSVDg

作者介绍

金多安,Elastic 认证专家,Elastic资深运维工程师,死磕Elasticsearch知识星球嘉宾,星球Top活跃技术专家,搜索客社区日报责任编辑

铭毅天下审稿并做了部分微调。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 铭毅天下Elasticsearch 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、问题背景:
  • 2、测试过程全记录
  • 3、查询测试
  • 4、观测到的现象
  • 5、测试初步结论
    • 5.1 结论1. large segment 策略对索引日常使用无明显变化。
      • 5.2 结论2. refresh 影响因素。
      • 6、扩展:关于soft delete
        • 6.1 soft delete 用途
          • 6.2 soft delete对 refresh 的影响
          • 作者介绍
          相关产品与服务
          腾讯云服务器利旧
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档