You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

索引含5万条日志的12MB文件时遇es_rejected_execution_exception错误

解决Logstash向Elasticsearch写入时出现429/es_rejected_execution_exception的问题

这个错误本质是Elasticsearch的bulk线程池处理不过来Logstash发送的请求,默认队列容量(200)被占满,所以拒绝了新的操作。下面是几个实用的解决思路:

从Logstash侧降低写入压力

  • 缩小单次批量发送的文档数:在Logstash的Elasticsearch输出配置里,把batch_size从默认值(通常是1000)调小,比如改成200,减轻ES的单次处理负担。示例配置:
    output {
      elasticsearch {
        hosts => ["你的ES地址:9200"]
        index => "目标索引名"
        batch_size => 200
      }
    }
    
  • 增加批量发送的间隔:添加flush_interval参数,比如设置为1秒,让Logstash不要持续高频发请求,给ES留出处理时间:
    flush_interval => 1
    
  • 优化重试策略:Logstash默认会重试429错误,但可以配置渐进式退避,让重试间隔逐渐变长,避免一直给ES施压:
    retry_initial_interval => 2
    retry_max_interval => 30
    

调整Elasticsearch的线程池配置

如果Logstash侧调整后还是不行,可以修改ES的elasticsearch.yml配置文件:

  • 增大bulk队列容量:把thread_pool.bulk.queue_size从默认200调高到500或1000(注意别调得太夸张,避免ES内存过载):
    thread_pool.bulk.queue_size: 500
    
  • 调整bulk线程数:默认值是CPU核心数*5,如果你的ES服务器CPU资源充足,可以适当调高线程数,但要注意不要超过CPU负载上限:
    thread_pool.bulk.size: 10  # 根据服务器CPU实际情况调整
    

修改后需要重启Elasticsearch才能生效。

临时应急方案

如果只是这次导入遇到问题,可以先暂停Logstash,等ES处理完队列里的积压请求后再重启导入;也可以把12MB的日志文件拆成几个小文件,分批次导入,降低单次导入的压力。


内容的提问来源于stack exchange,提问作者steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:14:07