排解 vCPU 軟性鎖定問題


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

軟性鎖定可能會導致 VM 在短時間內停止回應、中斷 VM 的 SSH 存取權,並觸發應用程式逾時或容錯移轉。發生軟性鎖定的 VM 可能會出現異常高的 CPU 使用率,或異常低的 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 核心或自訂模組,請先在負載下測試新變更,再部署至正式環境。確認自訂變更不會導致您無法獲得作業系統供應商的支援。
  • 請務必將作業系統更新為最新版本。詳情請參閱「作業系統詳細資訊」。