前言
最近用kibana做查詢或任何的API取資料時,
有機率會發生下列的錯誤
[parent] Data too large, data for [<http_request>] would be [1054296800/1005.4mb],
which is larger than the limit of [1020054732/972.7mb] ........
雖然說很偶發,但最近有越來越嚴重的趨勢。
所以,鼻子摸一摸,來解決吧。
正文
最近用kibana做查詢或任何的API取資料時,
有機率會發生下列的錯誤
[parent] Data too large, data for [<http_request>] would be [1054296800/1005.4mb],
which is larger than the limit of [1020054732/972.7mb],
real usage: [1054296800/1005.4mb],
new bytes reserved: [0/0b], usages [request=83853312/79.9mb,
fielddata=0/0b, in_flight_requests=0/0b, model_inference=0/0b,
eql_sequence=0/0b, accounting=23686052/22.5mb]
首先看到這一篇 What does this error mean - Data too large, data for [<transport_request>]
這邊有很好的解釋,發生的原因。
簡單說就是ES本身的斷路器發生作用,
導致請求失敗。
斷路器的文章可參考下面
ref .circuit breaker 斷路器
上面的錯誤的意思表示,
[<http_request>] would be [1054296800/1005.4mb],
http_request的請求需要 1005.4 mb
which is larger than the limit of [1020054732/972.7mb],
請求的上限是 972.7mb
此時可以到 DevTools ,輸入下面指令[1]
GET _cat/nodes?v=true&h=name,node*,heap*
可以看到目前的記憶體使用量(注意,此圖並不是事發當下的記憶體使用量)
解決方式[2]:
- 當下查看heap.max 只有1G ,故先加大記憶體到2G。
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: yabo
namespace: elastic-system
spec:
version: 7.16.2
nodeSets:
- name: all
count: 3
podTemplate:
spec:
containers:
- name: elasticsearch
env:
- name: ES_JAVA_OPTS
value: -Xms2g -Xmx2g
resources:
requests:
memory: 4Gi
limits:
memory: 4Gi
- shards數量太多
同樣50G的檔案,5個10G,跟1個50G shards,
前者的ram使用量會比較多。
但shards設太高,當node 掛掉時,
回覆的時間會變長。
修改ILM的shard大小,建議範圍是在 10G~50G 之間,
但仍要視情況而定。
ref. Size your shards
ref.
[1] : Dev Tools, api筆記
[2] : Fix common cluster issues
0 意見:
張貼留言