Azure Web Apps上のSitecore XPの高度なトラブルシューティング


概説

この記事では、Azure Web Apps上で動作するSitecore XPのトラブルシューティングに使用する情報を収集するツールや方法について説明しています。

以下の節では、次のような典型的なパフォーマンスの事象が発生した際に関連するデータを収集する方法について解説します。

KUDU ツールセット

Microsoft Azure Web Apps (App Service)には、ウェブ アプリケーションのトラブルシューティングのための、拡張低レベル診断を可能とするKUDU ツールセットが付属しています。

Azure Web AppにデプロイされたSitecore XPアプリケーション用のKUDUを起動するには、以下のURLにアクセスします。
https://<AzureWebAppの名称>.scm.azurewebsites.net/

註:Azure ポータルにログインし、かつ対象のウェブ アプリケーションが属するリソース グループの共同作成者(Contributor)としてのアクセス権限を有している必要があります。

Procdumpユーティリティを使用してメモリ ダンプを収集する

Azure App Serviceインスタンスには、デフォルト イメージ内にSysinternals suiteが含まれています。Sysinternals suiteは、KUDUコンソールで次のパスにアクセスすると見つかります。
D:\devtools\sysinternals

また、ProcDumpツールは、ここからダウンロードし、D:\home\Dumpsなどの任意のロケーションにアップロードして使用する事もできます。

メモリ ダンプを収集するには:

  1. KUDUを開き、Process Explorerにアクセスします。
  2. 目的のアプリケーションに対応するw3wp.exeのPID (プロセスID)を控えます。
  3. Debug Console -> CMDにアクセスします。
  4. コマンド ウインドウで、dumpsフォルダーに移動します。
  5. 以下のコマンドを実行して、プロセスのフル メモリ ダンプを生成します。
    procdump.exe -accepteula -ma [プロセスのPID]
    -ma — プロセス全体のメモリをダンプ ファイルに書き込む。
    -accepteula — Sysinternalsライセンス契約に自動的に合意する。

註:手動でのメモリ ダンプ収集が適切でない場合のために、ProcDumpユーティリティは自動的にメモリ ダンプを収集する条件を指定する機能を備えています。このトピックに関する詳細につきましては、ProcDumpを使用してメモリ ダンプを収集するにはの記事をご参照ください。

Process Explorer(オンデマンド)を使用してメモリ ダンプを収集する

メモリ ダンプを収集するには:

  1. KUDUを開き、Process Explorerにアクセスします。
  2. w3wp.exeプロセス(SCMでないもの)を右クリックして、コンテキスト メニューを開きます。
  3. コンテキスト メニューで、Download Memory Dump -> Full Dumpをクリックします。

    *.dmpファイルがダウンロードされます。これを、WinDbgなどの一般的なツールを使用して解析することができます。

註:メモリ ダンプを正常に解析するには、対象OSからのSOS.dllファイルが必要です。

SOS.dllファイルを入手するには:

  1. KUDUを開き、Debug console -> CMDにアクセスします。
  2. 上部にあるボタンを使用して、システム ドライブに移動します。
  3. 適切な.NET Frameworkフォルダ(例:C:\Windows\Microsoft.NET\Framework64\v4.0.30319 など)から、SOS.dllファイルを見つけます。
  4. SOS.dllファイルをダウンロードします。

Diagnostics As A Service (DaaS)を使用してメモリ ダンプを収集する

Azureポータルでメモリ ダンプを収集するには:

  1. Azureポータル(https://portal.azure.com)にログインします。
  2. トラブルシューティングが必要なAzure Web Appを選択します。
  3. Diagnose and solve problems」をクリックし、次に「Diagnostics as a Service」をクリックします。

  4. 新しいブレードで、以下のフィールドを設定します。
    • Application TypeASP.NETにセットします。
    • DiagnosersMemory Dumpチェックボックスをチェックします。Event Viewer LogsHttp Logsも必要な場合は、それらもチェックします。
    • Instances –App Serviceプランが複数のインスタンスを使用するよう設定されている場合、このフィールドで全てのインスタンスのログを収集するか、特定のインスタンスのログを収集するかを設定できます。

  5. Runをクリックして、ログを収集します。ブレードには処理の状況が表示され、収集されたデータの解析が行われます。データはD:\home\data\DaaS\Logsフォルダー配下に保存されます。

パフォーマンス プロファイルを収集する

パフォーマンス プロファイルを収集するには:

  1. KUDUを開き、Process explorerセクションにアクセスします。
  2. w3wp.exeプロセス(SCMでないもの)で、「Collect IIS Events」チェックボックスをチェックし、Start Profilingをクリックします。
  3. 対象のウェブ アプリケーションのホーム ページをリクエストします。また、プロファイリングが確実に実行されていることを確認するために、KUDUページでRefreshをクリックします。
  4. ウェブ アプリケーション上で、パフォーマンスの事象を再現します。
  5. KUDUのProcess explorerセクションに戻ります。
  6. Stop Profilingをクリックします。

この処理が終了すると、profile_*_w3wp_*.diagsessionファイルがPC上にダウンロードされます。

ダウンロードされたファイルをMicrosoft Visual Studioで開いて、ファイルを更に解析することができます。