Kibana导出百万级文档CSV报Max attempts reached(3)错误如何解决?
排查方向
- 首先检查未显式配置的Reporting重试参数:默认
xpack.reporting.capture.maxAttempts值为3,与报错信息的重试次数完全匹配。百万级数据导出涉及多轮滚动查询、内存计算、IO写入等操作,偶发的查询延迟、资源占用波动都会导致单次任务失败,默认3次重试很容易直接耗尽。 - 其次检查滚动查询上下文有效期:默认
xpack.reporting.csv.scroll.duration值为30s,百万级数据单轮拉取如果超过30s,scroll上下文会直接失效,导致任务中断触发重试。 - 然后检查节点资源配置:Kibana堆内存如果低于2G,导出过程中做数据拼接、格式转换时很容易出现GC耗时过长甚至进程假死,触发超时重试;ES节点如果CPU、查询队列占用达到阈值,也会导致scroll查询返回超时。
- 最后检查实际文件大小阈值:你当前配置的CSV最大为1GB,如果单条文档字段多、内容长,100万条数据生成的CSV很容易超过1GB阈值,直接中断任务。
解决方案
- 调整Kibana侧Reporting核心配置,在
kibana.yml中新增/修改如下参数:
# 重试次数调整为10次,适配大数量级导出的偶发超时场景 xpack.reporting.capture.maxAttempts: 10 # scroll上下文有效期调整为5分钟,避免拉取过程中上下文失效 xpack.reporting.csv.scroll.duration: 300000 # 适当调低单次scroll拉取条数,减少单轮查询的压力 xpack.reporting.csv.scroll.size: 5000
- 调大Kibana JVM堆内存,在Kibana安装目录下的
config/jvm.options文件中修改:
# 建议堆内存设置为物理内存的50%,最高不超过32G,百万级导出场景建议至少配置4G -Xms4g -Xmx4g
- 若确认100万条数据生成的CSV超过1GB,同步调整大小阈值:
# kibana.yml调整CSV最大大小、传输最大负载为2GB xpack.reporting.csv.maxSizeBytes: 2147483648 server.maxPayloadBytes: 2147483648
# elasticsearch.yml调整HTTP请求最大内容长度为2GB http.max_content_length: 2048mb
- 所有配置修改完成后,依次重启ES集群、Kibana服务,再重新执行导出操作即可。
内容的提问来源于stack exchange,提问作者AsimRazaKhan
相关产品推荐
相关产品推荐

