OpenSearch Memory Alert 響了又恢復,是記憶體不夠嗎?
我負責管理近百個 OpenSearch Cluster,前陣子發現 Heap 的 Alert 響了,但不是每一個 Cluster 都響,只有其中幾個。這個 Alert 的條件是 Heap 使用率超過 75%。響的那幾個,過幾分鐘會自己恢復,然後又響。 一開始我很緊張,擔心是節點出了問題,所以先檢查 Cluster 有沒有異常: Cluster 狀態:是 Green,沒有 Unassigned Shard 寫入正常:Fluentd 的 Buffer 沒有堆積,也沒有一直在 Retry Pod 沒有被 OOM:Restart 次數沒有增加,Last State 也不是 OOMKilled 三項都正常,我才打開 Heap 的 Metric 看。結果發現 Heap 使用率是一條「一直往上爬、掉下來、再往上爬」的鋸齒,警報響的時候剛好爬到高點,過幾分鐘掉下來就恢復了。 第一反應是把 75% 調高,但不是每個 Cluster 都響,似乎不只是閾值的問題。我更困惑的是:同樣是鋸齒,別的 Cluster 爬到 60% 就掉下來了,這個 Cluster 卻要爬到 80% 才掉。是它的設定跟別人不一樣嗎?還是它特別忙,記憶體給不夠? 要回答這些問題,得先搞懂 JVM 是怎麼回收記憶體的,特別是 Young GC。 ...