前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【最佳实践】巡检项:Elasticsearch Service(ES)集群 bulk 拒绝诊断

【最佳实践】巡检项:Elasticsearch Service(ES)集群 bulk 拒绝诊断

原创
作者头像
shanizeng
修改2023-04-19 11:11:57
1.5K0
修改2023-04-19 11:11:57
举报
文章被收录于专栏:腾讯云顾问腾讯云顾问

集群 bulk 拒绝的含义

bulk 即集群索引写入,bulk 拒绝表示集群当前节点的 bulk 请求超出了节点的默认 queue 容量,默认容量为1024。出现 bulk 拒绝时,说明集群已经达到了 bulk 操作处理能力的上限,或集群出现异常,应及时排查出现 bulk 拒绝的原因并解决,否则会影响业务的 bulk 操作,甚至出现数据丢失情况。

定位集群 bulk 拒绝的原因

1、判断集群 bulk 拒绝情况

通过观察集群的监控和日志,判断集群当前是否发生了 bulk 拒绝

写入拒绝率大于0即发生了写入拒绝
写入拒绝率大于0即发生了写入拒绝
日志中出现“rejected”“queue“相关字段即发生了 bulk 拒绝
日志中出现“rejected”“queue“相关字段即发生了 bulk 拒绝

2、确认当前拒绝的请求量

代码语言:javascript
复制
GET _cat/thread_pool/write?s=queue:desc&v
当前节点发生拒绝的请求量
当前节点发生拒绝的请求量

3、排查 bulk 拒绝的原因

(1)确认是否有写入突增

查看相关监控指标,确认集群在问题时间点是否有相应的写入突增

集群出现写入突增
集群出现写入突增

确认集群当前的写入并发是否达到集群瓶颈,根据经验,理想状态下单个 4C16G 的节点可对应承载1W QPS 的纯写入,如果同时伴随查询,集群可承载的 QPS 相对会更低。因此,若集群的写入已达到集群瓶颈,即会发生写入拒绝,建议升级配置。

(2)确认是否 bulk body 设置不合理

确认单个 bulk body 是否合理,以 logstash 为例,bulk_size 默认大小为5000,若写入的单条数据平均大小为2kB,则单次请求的 bulk body 为10mb。

(3)确认是否索引分片设置不合理

确认集群索引分片是否有分布不均的情况

代码语言:javascript
复制
GET /_cat/shards?s=node,store:desc

根据相应的问题提供解决方案

1、集群写入到达瓶颈

根据官网提供的“集群规格和容量配置评估”文档,测算当前集群规格是否能满足写入要求https://cloud.tencent.com/document/product/845/19551

若根据文档难以计算,可灵活使用“新建集群”——“elasticsearch集群配置评估工具”获取合适的集群规格

2、bulk 请求体设置不合理

原厂建议单个 body 请求体在 5m-15m 之间,根据经验,单个 body 为10m 最为合适。如过大,则会导致单个 bulk 请求处理时间过长,导致队列排满;如过小,则会导致 bulk 请求数过多,导致队列排满。

3、索引分片设置不合理

索引分片分配建议:

1、主 shard 数与副 shard 数之和需要是集群数据节点的整数倍;

2、分片容量,主要分为写入和查询两个场景

(写多读少场景)索引单分片10g~20g,多分片有利于写入;

(读多写少场景)索引单分片20g~40g,尽量减少分片数,可以降低热点,因为当分片数过多时,就容易出现长尾子请求,即有可能部分子请求因节点异常或 Old GC、网络抖动等延迟响应,导致整个请求响应缓慢。另一方面,拆分过多的子请求无法提升数据节点请求吞吐,不能充分利用 CPU。在尽量减少主分片数的情况下,同时也可以适当增加副本数,从而提升查询吞吐;

3、在遵循单分片设计原则的前提下,预测出索引最终大小,并根据集群节点数设计索引分片数量,使分片尽量平均分布在各个节点。

4. 索引尽量增加时间后缀,按时间创建索引,若单日数据量较小,可考虑按周或按月生成索引;

5. 在遵循单分片设计原则的前提下,预测出索引最终大小,并根据集群节点数设计索引分片数量,使分片尽量平均分布在各个节点。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集群 bulk 拒绝的含义
  • 定位集群 bulk 拒绝的原因
    • 1、判断集群 bulk 拒绝情况
      • 2、确认当前拒绝的请求量
        • 3、排查 bulk 拒绝的原因
          • (1)确认是否有写入突增
          • (2)确认是否 bulk body 设置不合理
          • (3)确认是否索引分片设置不合理
      • 根据相应的问题提供解决方案
        • 1、集群写入到达瓶颈
          • 2、bulk 请求体设置不合理
            • 3、索引分片设置不合理
            相关产品与服务
            Elasticsearch Service
            腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档