排解 vCPU 軟性鎖定問題


本文說明如何排解 vCPU 軟體鎖死問題。如果虛擬機器 (VM) 執行個體的 vCPU 無法執行新工作超過 20 秒,就會發生軟性死結。大多數軟體鎖死都是應用程式軟體中的錯誤所致。

軟性死結可能會導致 VM 短時間內沒有回應、中斷 VM 的 SSH 存取權,以及觸發應用程式逾時或容錯移轉。如果 VM 發生軟性鎖死,CPU 使用率也可能異常偏高或偏低,具體情況取決於軟性鎖死的原因。

找出軟鎖定

如要判斷 VM 是否發生軟性死結,請執行下列其中一項操作:

軟性鎖死堆疊追蹤範例

watchdog: BUG: soft lockup - CPU#3 stuck for 22s!

如要偵測日後的軟性死結,請採取下列做法:

  1. 啟用序列埠輸出記錄

  2. 為下列記錄建立記錄型快訊政策

    resource.type="gce_instance" log_id("serialconsole.googleapis.com/serial_port_1_output") textPayload=~"watchdog.*lockup"
    

排解軟鎖定問題

確認發生軟體鎖死後,請嘗試下列疑難排解步驟來解決問題:

  1. 請前往作業系統供應商的網站,查看作業系統版本是否有已知錯誤。有時您可能會在堆疊追蹤中找到特定核心模組的參照,指出涉及的特定函式或作業。
  2. 判斷軟性鎖定是否會以任何頻率重複發生,例如與高負載或特定活動同時發生。如果軟性死結與高負載相關,您可能需要重新設定工作負載,例如使用較大的 VM,或將負載分散到更多 VM。
  3. 檢查軟體死結是否與執行階段環境的任何變更相關,例如新的軟體部署或 OS 映像檔更新。
  4. 查看系統事件稽核記錄的稽核記錄,評估軟性死結發生前後是否發生任何維護事件

如果上述疑難排解步驟無法解決問題,請提交支援案件,並附上您在疑難排解過程中收集到的所有資訊。

避免軟性鎖死的最佳做法

為避免 VM 發生軟鎖死,建議您實作下列最佳做法:

  • 請確保您已為系統設定適當的備援元件 (例如高可用性叢集),以便在特定 VM 發生長時間的軟體鎖死時提供容錯移轉功能。詳情請參閱「設計具備復原能力的系統」。
  • 如要處理需要大量運算資源的工作負載,建議使用運算最佳化機器系列
  • 使用模擬維護事件測試工作負載,瞭解工作負載在即時遷移期間 (如已啟用) 的效能,特別是在負載測試期間。
  • 如果您在 VM 中執行自訂 Linux 核心或自訂模組,請先在負載下測試新變更,再將其部署至正式環境。確認自訂變更不會導致您無法向 OS 供應商尋求支援。
  • 確保作業系統為最新版本。詳情請參閱「作業系統詳細資料」。