全部產品
Search
文件中心

Elasticsearch:重啟變更報錯:叢集狀態不健康或存在close索引,不能執行當前操作

更新時間:Jun 30, 2024

本文介紹重啟變更報錯的詳細說明、可能原因及解決方案。

報錯說明

當您觸發了Elasticsearch執行個體重啟變更時,系統提示“叢集狀態不健康或存在close索引,不能執行當前操作,建議待叢集狀態穩定或開啟已關閉的索引後再試”。報錯說明

問題原因及解決方案

當叢集存在以下情況,重啟或變更執行個體時會報出此類錯誤:
  • 叢集中存在close狀態的索引。

    您可以通過GET /_cat/indices?v命令查看索引狀態。如果索引狀態為close,可通過POST /<index_name>/_open將索引狀態設定為open。

  • 叢集處於yellow或red狀態。
    您可以通過GET /_cat/health?v命令查看叢集狀態。常見的異常原因及解決方案如下。
    常見異常原因解決方案
    shard自動分配,已經達到最大重試次數5次建議通過POST /_cluster/reroute?retry_failed=true命令,重新分配分區。
    某一索引主副本分區分配到一個節點,對應報錯資訊為:the shard cannot be allocated to the same node on which a copy of the shard already exists建議將副本設定為0,待叢集正常後再設定為1。
    已達到節點最大允許同時分配分區個數的限制當前節點正在分配shard,請耐心等待。您可以通過GET _cluster/allocation/explain命令,查看完整的未分配原因。
    節點失聯通過GET _cat/nodes?v命令,查看節點是否已脫離叢集。建議對脫離叢集的節點進行重啟。
    磁碟使用率高磁碟使用率達到水位線,當前節點磁碟已降到85%以下,建議對節點進行重啟,使診斷迴歸正位。
    堆記憶體熔斷建議限流,並將歷史索引close降低記憶體開銷。
    其他叢集存在主分區未分配,需要關注CPU使用率、堆記憶體使用量情況,結合GET _cluster/allocation/explain命令,擷取shard未分配資訊進行分析。
  • 叢集狀態正常,但負載過高。
    常見排查方式、異常原因及解決方案如下。
    排查方式常見異常原因解決方案
    • 查看磁碟使用率監控
    • GET _cat/allocation命令
    • GET _cluster/allocation/explain命令
    • 查看日誌
    磁碟使用率達到85%磁碟使用率達到85%,影響到分區的建立,建議按照以下方式處理。處理後,可通過查看磁碟監控,判斷磁碟使用率是否降到85%以下。
    • 刪除歷史索引資料。
    • 擴容磁碟。
    • 將索引複本數設定為0。
    查看CPU使用率監控、熱線程CPU使用率達到85%CPU使用率達到85%,影響到叢集的穩定性。需要降低流量或擴容,關注叢集總體讀或寫入QPS監控。
    查看堆記憶體監控、日誌、old gc collection count、old gc collecting.ms堆記憶體達到75%以上堆記憶體過高,將嚴重影響到降低叢集的穩定性,建議按照以下方式處理:
    • 降低讀寫量。
    • 強制擴容叢集規格。
    • 將歷史索引的狀態設定為close,降低記憶體使用量率。
    查看load_1m監控load_1m>CPU核心數load_1m超過CPU核心數,說明當前伺服器負載大,需要關注叢集總體讀或寫入QPS監控及磁碟吞吐(每秒讀寫大小)監控,及時降低流量或擴容。
    說明