Pages - Menu

2022年3月1日 星期二

[ECK] kibana錯誤解法 , parent Data too large...

前言

最近用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]:

  1. 當下查看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  

ref. Manage compute resources

  1. 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

沒有留言:

張貼留言