前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录一次elasticsearch的datastream写入故障

记录一次elasticsearch的datastream写入故障

原创
作者头像
空洞的盒子
发布2023-11-27 10:46:15
2010
发布2023-11-27 10:46:15
举报
文章被收录于专栏:JD的专栏

背景

用户使用社区的data stream对集群进行写入,会偶现403块只读错误。

异常报错日志如下:

代码语言:javascript
复制
2023-04-18 12:40:53.524 ERROR   indexthrottler/excep_throttler.go:143   
es update error index: datastream_784fd7 id: 38339d010 CrashUUID: 8BF7A1A4A02156 
err: elastic: Error 403 (Forbidden)2023-04-18 12:40:53.524 ERROR   indexthrottler/excep_throttler.go:143   
es update error index: datastream_784fd7 id: 38339d010 
CrashUUID: 8BF7A1A4A021 err: elastic: Error 403 (Forbidden)

分析思路

1.首先对集群磁盘使用率进行了排查,发现磁盘使用率正常,并未达到磁盘水位,没有达到触发只读的阈值。

2.排查用户写入流量,是否存在流量过大导致文件系统只读的情况。

3.通过排查发现用户使用的是data stream对数据进行写入,而datastream通常则是由lifecycle对datastream索引进行管理。排查lifecycle中是否有引起触发块只读的动作。

以下是用户配置的lifecycle:

代码语言:json
复制
{
 "DataStreamILMPolicy" : {
 "version" : 18,
 "modified_date" : "2022-03-08T11:01:17.618Z",
 "policy" : {
 "phases" : {
 "hot" : {
 "min_age" : "0ms",
 "actions" : {
 "forcemerge" : {
 "max_num_segments" : 1
 },
 "rollover" : {
 "max_size" : "128gb",
 "max_age" : "20d"
 },
 "set_priority" : {
 "priority" : 100
 }
 }
 },
 "delete" : {
 "min_age" : "45d",
 "actions" : {
 "delete" : {
 "delete_searchable_snapshot" : true
 }
 }
 }
 }
 }
 }
}

4. 通过排查发现用户在lifecycle的配置中,有对索引进行forcemerge的操作。

通过查阅官网和源码,我们发现在lifecycle对索引进行forcemerge时,会将索引置为read-only状态;待该动作完成后在解除只读状态。

这里在lifecycle中对索引进行merge操作,设置将索引的segment通过merge合并为一个大段,在查询场景下的确对查询有一定的提高。如果在对elasticsearch进行请求的过程当中,没有遇到因为segment数量过多而导致查询慢或写入慢的问题,建议可以先不在lifecycle中添加merge动作,因为forcemerge这个动作自身也是一个比较耗资源的操作,非必要情况下可以去掉,不用强行对索引进行forcemerge。可以根据实际业务情况进行评估,是否需要对索引进行forcemerge;

解决办法

需要去掉lifecycle中对于索引的的forcemerge配置,建议根据业务系统进行评估,在业务低峰期,改用定时脚本或手动方式对索引进行forcemerge动作。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 分析思路
  • 解决办法
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档