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. OS のバージョンに関する既知のエラーについては、OS ベンダーのサイトでご確認ください。スタック トレース内に特定のカーネル モジュールへの参照があり、関連する特定の関数またはオペレーションを示唆している場合があります。
  2. 高負荷や特定のアクティビティと一致するなど、ソフトロックアップが頻繁に繰り返されるかどうかを特定します。ソフトロックアップが高負荷と関連している場合は、より大きな VM を使用するか、複数の VM に負荷を分散するなど、ワークロードを再構成する必要があります。
  3. ソフトロックアップが、新しいソフトウェアのデプロイや OS イメージの更新など、ランタイム環境の変更と関連しているかどうかを確認します。
  4. システム イベント監査ログの監査ログを確認して、ソフトロックアップの発生時にメンテナンス イベントが発生したかどうかを評価します。

上記のトラブルシューティング手順で問題が解決しない場合は、サポートケースを作成し、トラブルシューティングで収集したすべての情報を含めます。

ソフトロックアップを回避するためのベスト プラクティス

VM でソフトロックアップが発生しないようにするには、次のベスト プラクティスを実装することをおすすめします。

  • 特定の VM でソフトロックアップが長時間続いた場合にフェイルオーバー機能を提供できるように、高可用性クラスタなど、システムに適切な冗長コンポーネントが構成されていることを確認します。詳細については、復元力のあるシステムの設計をご覧ください。
  • コンピューティング負荷の高いワークロードの場合は、コンピューティング最適化マシン ファミリーの使用を検討してください。
  • シミュレートされたメンテナンス イベントでワークロードをテストして、ライブ マイグレーション中(有効な場合)のワークロードのパフォーマンスを確認します。特に、負荷テストで確認します。
  • VM でカスタム Linux カーネルまたはカスタム モジュールを実行している場合は、本番環境にデプロイする前に、負荷がかかった状態で新しい変更をテストします。カスタム変更が OS ベンダーからのサポートを受けられない原因にならないことを確認します。
  • オペレーティング システムを最新の状態に保つ。詳しくは、オペレーティング システムの詳細をご覧ください。