kibana 查询索引报 circuit_breaking_exception
elasticsearch版本是7.7.1,kibana版本也是7.7.1
这个集群新建运行了20多天,也接入了部分业务。接入后通过kibana的discover查询业务日志都是正常的。今天接入了一个新业务,新业务设置了索引后通过kibana查询其日志时很久都没返回结果,还导致kibana挂了。而查询其它之前接入的业务是正常的,基本一秒左右出结果。我开了kibana的debug模式,通过日志发现在查询新业务时报错,报错如下:
“type”:”log”,”@timestamp”:”2020-07-07T14:31:17Z”,”tags”:[“error”,”plugins”,”taskManager”,”taskManager”],”pid”:17267,”message”:”Failed to poll for work: [circuit_breaking_exception] [parent] Data too large, data for [] would be [32930241680/30.6gb], which is larger than the limit of [32307045990/30gb], real usage: [32930235136/30.6gb], new bytes reserved: [6544/6.3kb], usages [request=0/0b, fielddata=0/0b, in_flight_requests=6544/6.3kb, accounting=0/0b], with { bytes_wanted=32930241680 & bytes_limit=32307045990 & durability="TRANSIENT" }…
这个集群使用elasticsearch默认配置。1个主1副本,没切片。新业务的索引大小是21g左右。 但其它业务的日志索引是58g的也能在1秒左右返回结果。
我设置了indices.breaker.total.limit为40%, 80%,95%都不行。
也执行过shell
curl -XPOST -H "Content-Type:application/json" 'http://XXX.XXX.XXX.XX:9200/_cache/clear' -d '{ "fielddata": "true" }'
都没效果。
请问各位,你们有遇到过这种情况吗?
从错误反馈上来看,是因为
in_flight_requests
这个参数导致的,应该和fielddata
没有关系,可以从这方面入手看一下@DRose 谢谢你的指引。 发现原因了,本来这个索引是nginx的日志,但被错误的识别为java日志。在logstash层识别为java并过滤并重新组装了。现在改回来nginx类型后就正常了。 但是为什么成java类型后在kibana查询会出现问题,这个我还得从logstash开debug看下组装成什么样子才知道问题出在哪了。
最后你这边最后 这个问题是怎么解决的啦
@gtuiw logstash吞吐有做优化吗?做做调整效果绝对惊艳