Elasticsearch status 429 "es_rejected_execution_exception"

问题

当我将数据写入集群时,收到类似于以下内容的错误消息:

error":"elastic: Error 429 (Too Many Requests): rejected execution of org.elasticsearch.transport.TransportService$7@b25fff4 on 
EsThreadPoolExecutor[bulk, queue capacity = 50, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@768d4a66[Running, 
pool size = 4, active threads = 4, queued tasks = 50, completed tasks = 820898]] [type=es_rejected_execution_exception]"

简短描述

当 Elasticsearch 集群收到大量请求且无法再接收任何请求时,通常会发生“es_rejected_execution_exception”异常。每个节点都有一个线程池队列,可以容纳 50 到 200 个请求,具体取决于您使用的 Elasticsearch 版本。队列已满时,将拒绝新请求。

解决方法

注意:在大多数ES 版本中,无法增加队列大小。该队列存在的原因是它将请求限制为可管理的数量。有关更多信息,请参阅 Elasticsearch 文档中的“线程池”部分

通过下列某一种方法解决“es_rejected_execution_exception”错误:

  • 添加更多节点:每个节点都有一个批量队列,因此添加更多节点可以为您提供更多的排队容量。要添加节点,请参阅配置 Amazon ES 域(控制台)
  • 切换到更大的实例类型:对于批量请求,每个节点上线程池中的线程数等于可用处理器的数量。切换到具有更多虚拟 CPU (vCPU) 的实例,以获取更多线程来处理批量请求。有关更多信息,请参阅选择实例类型和测试
  • 优化批量请求大小:不是发送许多小批量请求,而是发送一些大批量请求。
  • 改善索引性能:当文档编制索引速度更快时,批量队列不太可能达到容量。有关性能优化的更多信息,请参阅 Elasticsearch 文档中的索引性能提示

实际使用的解决方法是:

1、记录失败的请求并重发

2、减少并发写的进程个数,同时加大每次bulk请求的size

 

参考文章链接:

https://aws.amazon.com/cn/premiumsupport/knowledge-center/resolve-429-error-es/

https://blog.csdn.net/opensure/article/details/51491815

https://www.elastic.co/guide/en/elasticsearch/guide/current/bulk.html

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值