5

私には、クライアントからの接続を処理するために多数のスレッドが実行されるワーカーの役割があります。負荷テスト中に、役割が応答しなくなり、再起動するまでその状態のままであることに気付きました。Visual Studioデバッガーで(アクティブなプロセスを一時停止して)それを見ると、待機中のスレッドの数を確認できますが、一時停止されていない場合、アクティビティは発生しません。役割がその状態のままになる原因をどのように知ることができますか?

4

1 に答える 1

6

負荷テストを実行したときに Worker ロールで問題が発生し始めたと述べたように、最初はロールが正常に機能していたと想定しても安全です。これにより、問題はプラットフォーム固有ではなくアプリケーション固有であるという結論に至ります。Windows Azure VM から診断情報を取得するには、次の 2 つの方法があります。

  • オプション 1 (推奨): Azure VM で何が起こっているかを確認するには、ロールに Windows Azure Diagnostics を追加する必要があります。これにより、パフォーマンス カウンター、メモリの詳細、ロール プロセスの正常性、および Azure VM から移行されたその他のデータを取得できます。オフラインで分析できる Azure Storage。

  • オプション 2: Azure VM への RDP アクセスを有効にしてから、Azure VM にログインし、Perfmon、Process Explorer、およびその他の正常性監視ツールを Azure VM にインストールして、何が起こっているかを監視します。

  • オプション 3 (最後の手段): Azure VM への RDP と WinDBG のインストール、ホスト プロセスのデバッグ

このような状態で、worker ロールが機能しなくなった場合、これは私が実際に提案することです。

  1. CPU、メモリ プレッシャ、スレッドのリストを探し、ブロックされているスレッドとその原因を特定します。
  2. ホスト ワーカー プロセスの正常性、前回の起動時、何らかの理由でリサイクルされているか、Azure VM で実行されている時間などを調べます。
  3. ワーカー ロールで「ProgramEntryPoint」として設定されている別のプロセスがある場合は、その正常性を確認します。
  4. 手がかりがないか、アプリケーションのシステム レベルでイベント ログを確認します。Worker ロールでは、アプリケーション イベント ログに何かが記録されるとは思いませんが、一見の価値があります。
  5. 私は Process Monitor を使用していくつかのプロセスを監視し、ログを収集して、プロセスが終了したときの最後の状態、アクセスしていたもの、および他の問題によって不足していたプロセスを確認します。

要するに、オンプレミスのマシンで行うのとほぼ同じ方法で、Azure VM の根本原因を掘り下げる必要があるということです。

于 2012-05-20T00:50:13.693 に答える