このドキュメントでは、vCPU のソフトロックアップのトラブルシューティング方法について説明します。ソフトロックアップは、仮想マシン(VM)インスタンスの vCPU が 20 秒を超えて新しいタスクを実行できない場合に発生します。ほとんどのソフトロックアップは、アプリケーション ソフトウェアのバグが原因で発生します。
ソフトロックアップが発生すると、VM が短時間応答しなくなり、VM への SSH アクセスが中断され、アプリケーションのタイムアウトまたはフェイルオーバーがトリガーされる可能性があります。ソフトロックアップが発生している VM では、ソフトロックアップの正確な原因に応じて、CPU 使用率が異常に高くなるか、異常に低くなることもあります。
ソフトロックアップを特定する
VM でソフトロックが発生しているかどうかを特定するには、次のいずれかを行います。
- 以前に VM のシリアルポート出力ロギングを有効にしていた場合は、シリアルポート出力を確認して、ソフトロックアップ スタック トレースを探します。
- VM のオペレーティング システム ログ(
/var/log/messages
)で、ソフトロックアップのスタック トレースを確認します。
ソフトロックアップのスタック トレース例
watchdog: BUG: soft lockup - CPU#3 stuck for 22s!
今後のソフトロックアップを検出するには、次の操作を行います。
次のログに対してログベースのアラート ポリシーを作成します。
resource.type="gce_instance" log_id("serialconsole.googleapis.com/serial_port_1_output") textPayload=~"watchdog.*lockup"
ソフトロックアップのトラブルシューティング
ソフトロックアップが発生していることを確認したら、次のトラブルシューティングの手順で問題を解決してください。
- OS のバージョンに関する既知のエラーについては、OS ベンダーのサイトでご確認ください。スタック トレース内に特定のカーネル モジュールへの参照があり、関連する特定の関数またはオペレーションを示唆している場合があります。
- 高負荷や特定のアクティビティと一致するなど、ソフトロックアップが頻繁に繰り返されるかどうかを特定します。ソフトロックアップが高負荷と関連している場合は、より大きな VM を使用するか、複数の VM に負荷を分散するなど、ワークロードを再構成する必要があります。
- ソフトロックアップが、新しいソフトウェアのデプロイや OS イメージの更新など、ランタイム環境の変更と関連しているかどうかを確認します。
- システム イベント監査ログの監査ログを確認して、ソフトロックアップの発生時にメンテナンス イベントが発生したかどうかを評価します。
上記のトラブルシューティング手順で問題が解決しない場合は、サポートケースを作成し、トラブルシューティングで収集したすべての情報を含めます。
ソフトロックアップを回避するためのベスト プラクティス
VM でソフトロックアップが発生しないようにするには、次のベスト プラクティスを実装することをおすすめします。
- 特定の VM でソフトロックアップが長時間続いた場合にフェイルオーバー機能を提供できるように、高可用性クラスタなど、システムに適切な冗長コンポーネントが構成されていることを確認します。詳細については、復元力のあるシステムの設計をご覧ください。
- コンピューティング負荷の高いワークロードの場合は、コンピューティング最適化マシン ファミリーの使用を検討してください。
- シミュレートされたメンテナンス イベントでワークロードをテストして、ライブ マイグレーション中(有効な場合)のワークロードのパフォーマンスを確認します。特に、負荷テストで確認します。
- VM でカスタム Linux カーネルまたはカスタム モジュールを実行している場合は、本番環境にデプロイする前に、負荷がかかった状態で新しい変更をテストします。カスタム変更が OS ベンダーからのサポートを受けられない原因にならないことを確認します。
- オペレーティング システムを最新の状態に保つ。詳しくは、オペレーティング システムの詳細をご覧ください。