我的 Amazon OpenSearch Service 叢集 JVM 記憶體壓力過高,我不知道如何解決這個問題。
簡短說明
預設情況下,OpenSearch Service 會使用執行個體 50% 的 RAM,來處理大小最多 32 GiB 的 JVM 堆積。JVM 記憶體壓力會指定叢集節點中 Java 堆積的百分比。以下準則指出 JVM 記憶體壓力百分比的含義:
- 如果 JVM 記憶體壓力達到 75%,則 OpenSearch Service 會對 x86 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體類型,啟動並行標記掃描 (CMS) 記憶體回收器。以 ARM 為基礎的 Graviton Amazon EC2 執行個體類型,使用 Garbage-First (G1) 記憶體回收器,此記憶體回收器會使用額外的簡短暫停和堆積重組。記憶體回收是一個大量佔用 CPU 的程序。如果記憶體使用量持續增加,您可能會遇到 ClusterBlockException、JVM OutOfMemoryError 或其他叢集效能問題。如需詳細資訊,請參閱從連續繁重的處理負載中復原。
- 如果 JVM 記憶體壓力超過 92% 達 30 分鐘,則 OpenSearch Service 會封鎖所有寫入作業。
- 如果 JVM 記憶體壓力達到 100%,則 OpenSearch Service JVM 會設定為結束,並最終因為「記憶體不足」(OutOfMemory,OOM) 而導致重新啟動。
下列原因可能會造成 JVM 記憶體壓力過高:
- 叢集的請求數量激增。
- 在查詢中使用彙總、萬用字元,以及選取廣泛的時間範圍。
- 跨節點或叢集中碎片太多的不平衡碎片分配。
- 欄位資料或索引對應爆炸。
- 執行個體類型無法處理傳入的負載。
解決方法
減少進入叢集的流量,以解決 JVM 記憶體壓力過高的問題。若要減少進入叢集的流量,請遵循下列最佳實務:
如需有關如何疑難排解 JVM 記憶體壓力過高的詳細資訊,請參閱為什麼我的 OpenSearch Service 節點會當機?
相關資訊
疑難排解 Amazon OpenSearch Service
如何縱向或橫向擴展 Amazon OpenSearch Service 網域?
開始使用 Amazon Elasticsearch Service: 我需要多少碎片?