全部產品
Search
文件中心

:為什麼Linux執行個體設定核心參數kernel.unknown_nmi_panic後, 執行個體異常重啟?

更新時間:Aug 06, 2024

本文介紹Linux執行個體設定核心參數kernel.unknown_nmi_panic後,執行個體異常重啟的問題原因和解決方案。

問題現象

在Linux系統的阿里雲ECS執行個體中,設定核心參數kernel.unknown_nmi_panic後,執行個體異常重啟。系統復原後查看核心日誌,提示以下調用棧資訊:

[5912557.130943] Uhhuh. NMI received for unknown reason 20 on CPU 0.

[5912557.131115] Do you have a strange power saving mode enabled?

[5912557.131287] Kernel panic - not syncing: NMI: Not continuing

問題原因

該問題一般是由於核心參數kernel.unknown_nmi_panic被設定為1,導致核心在收到未知的不可屏蔽中斷髮生Panic,出現執行個體重啟現象。

核心參數 kernel.unknown_nmi_panic用於控制核心在遇到未知的不可屏蔽中斷(Non Maskable Interrupt,簡稱NMI)時的行為。目前大多數Linux發行版本上kernel.unknown_nmi_panic 的值均設為0,即忽略未知的不可屏蔽中斷。如果由於某些原因開啟了該配置,可能導致核心在收到未知的不可屏蔽中斷髮生Panic,並出現執行個體重啟的情況。

  • kernel.unknown_nmi_panic = 1:核心將在遇到未知的不可屏蔽中斷時,認為系統出錯並觸發核心Panic,從而導致執行個體出現非預期的重啟或業務中斷。

  • kernel.unknown_nmi_panic = 0:忽略該問題不做進一步處理,保持執行個體目前狀態繼續運行。

解決方案

您可以參考以下方法進行處理,將核心參數kernel.unknown_nmi_panic的值設定為0,忽略未知的不可屏蔽中斷。

  1. 登入ECS執行個體。

    具體操作,請參見通過密碼或密鑰認證登入Linux執行個體

  2. 執行以下命令,查看是否存在核心參數kernel.unknown_nmi_panic相關配置。

     grep 'kernel.unknown_nmi_panic' /etc/sysctl.conf /etc/sysctl.d/*.conf
    • 如果已有相關配置,則需要手動刪除多餘的配置,只保留/etc/sysctl.conf 檔案的中一項並設定為kernel.unknown_nmi_panic = 0

    • 如果不存在相關配置,請依次執行以下命令,在/etc/sysctl.conf 檔案末尾添加kernel.unknown_nmi_panic = 0內容。

      sudo sh -c "echo >> /etc/sysctl.conf"
      sudo sh -c "echo 'kernel.unknown_nmi_panic = 0' >> /etc/sysctl.conf"
  3. 執行以下命令,使配置在當前環境中生效。

    sudo sysctl -p
    說明

    如果需要額外修改核心參數,並且不希望重新載入核心參數設定檔,請執行sysctl -w kernel.unknown_nmi_panic=0命令,只修改核心參數kernel.unknown_nmi_panic的值為0