次の方法で共有


起動しない Azure Cloud Services (延長サポート) ロール インスタンスをトラブルシューティングする

この記事では、Azure Cloud Services (延長サポート) ロール インスタンスでのスタートアップ エラーのトラブルシューティング方法について説明します。

トラブルシューティングのチェックリスト

ロール インスタンスで発生する問題を診断するには、次のオプションから選択します。

オプション 1: カスタム エラーをオフにする

完全なエラー情報を表示するには、Web ロールの Web.config ファイルを開き、カスタム エラー モードを Off に設定してから、サービスを再デプロイします。

  1. Visual Studio でソリューションを開きます。

  2. ソリューション エクスプローラーで、Web.config ファイルを開きます。

  3. system.web セクションで、次の XML コードを追加します。

    <customErrors mode="Off" />
    
  4. ファイルを保存します。

  5. サービスをパッケージし直して再度デプロイします。

サービスが再デプロイされると、サービスに関して表示される可能性があるエラー メッセージには、不足しているアセンブリまたは DLL の名前が含まれます。

オプション 2: PowerShell を使用してロール インスタンスの状態を表示する

ロール インスタンスのランタイム状態に関する情報を取得するには、 Get-AzCloudServiceRoleInstanceView コマンドレットを実行します。

$roleInstanceView = @{
    CloudServiceName = "<cloud-service-name>"
    ResourceGroupName = "<resource-group-name>"
    RoleInstanceName = "WebRole1_IN_0"
}
Get-AzCloudServiceRoleInstanceView @roleInstanceView

次の出力例に示すように、ロール インスタンスの状態が最初の列に表示されます。

Statuses            PlatformFaultDomain PlatformUpdateDomain
--------            ------------------- --------------------
{RoleStateStarting} 0                   0

オプション 3: Azure portal を使用してロール インスタンスの状態を表示する

Azure portal でロール インスタンスに関する状態情報を表示するには、次の手順に従います。

  1. Azure ポータルで、Cloud サービス (延長サポート)を検索して選択します。

  2. クラウド サービスの一覧で、クラウド サービスの名前を選択します。

  3. メニュー ウィンドウで、 Settings を確認し、 Roles と Instances を選択します。

  4. ロール インスタンスの名前を選択します。

  5. ロール インスタンス ペインで、 Status フィールドのロール インスタンスの状態をメモします。

オプション 4: リモート デスクトップを使用してエラー情報を表示する

ロールにアクセスし、完全なエラー情報を表示するには、次の手順に従ってリモート デスクトップ プロトコル (RDP) を使用します。

  1. Azure Cloud Services (延長サポート) に対してリモート デスクトップ拡張機能を追加します

  2. Azure ポータルでクラウド サービス インスタンスに Ready 状態が表示されたら、リモート デスクトップを使用してクラウド サービスにサインインします。 詳細については、リモート デスクトップを使用したロール インスタンスへの接続に関する記事を参照してください。

  3. リモート デスクトップの設定に使用した資格情報を使用して、仮想マシン (VM) にサインインします。

  4. コマンド プロンプト ウィンドウを開きます。

  5. ipconfig コマンドを実行します。 IPv4 アドレスの戻り値をコピーします。

  6. Web ブラウザーを開きます。

  7. アドレス バーに IPv4 アドレスを貼り付け、スラッシュと Web アプリケーションの既定のファイルの名前を追加します。 たとえば、http://<ipv4-address>/default.aspx のようにします。

この時点で Web サイトにアクセスすると、詳細情報を含むエラー メッセージが表示されます。 次に例を示します。

"/" アプリケーションのサーバー エラー。

ファイルまたはアセンブリ 'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' またはその依存関係のいずれかを読み込めませんでした。 指定されたファイルが見つかりません。

説明: 現在の Web 要求の実行中にハンドルされない例外が発生しました。 エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.IO.FileNotFoundException

オプション 5: コンピューティング エミュレーターを使用する

Azure Compute Emulator を使用して、不足している依存関係と Web.config エラーの問題を診断およびトラブルシューティングできます。 この方法を使用して問題を診断するときに最適な結果を得るには、Windows をクリーン インストールしたコンピューターまたは VM を使用します。

Azure コンピューティング エミュレーターを使用して問題を診断するには:

  1. Azure SDK をインストールします。

  2. 開発コンピューターで、クラウド サービスのプロジェクトをビルドします。

  3. ファイル エクスプローラーで、クラウド サービス プロジェクトの bin\debug フォルダーに移動します。

  4. 問題のデバッグに使用するコンピューターに .csx フォルダーと .cscfg ファイルをコピーします。

  5. クリーン コンピューターで、Azure SDK コマンド プロンプト ウィンドウを開きます。

  6. コマンド プロンプトで、次の csrun コマンドを実行します。

    csrun.exe /devstore:start
    
  7. 次のコマンドを実行します。

    run csrun <path-to-.csx-folder> <path-to-.cscfg-file> /launchBrowser
    

    ロールが開始されると、Web ブラウザーに詳細なエラー情報が表示されます。

追加の診断が必要な場合は、標準の Windows トラブルシューティング ツールを使用できます。

オプション 6: IntelliTrace を使用する

Note

Visual Studio 2022 では IntelliTrace を使用できません。 Visual Studio 2019、2017、または 2015 を使用している場合、IntelliTrace は引き続き使用できます。

.NET Framework 4 を使用する worker および Web ロールの場合は、IntelliTrace を使用できます。 IntelliTrace は Visual Studio Enterprise で使用できます。

IntelliTrace が有効になっている間にクラウド サービスをデプロイするには:

  1. Azure SDK 1.3 以降のバージョンがインストールされていることを確認します。

  2. Visual Studio で、ソリューションをデプロイします。 デプロイを設定するときは、[.NET 4 のロールに対して IntelliTrace を有効にします] チェックボックスをオンにします。

  3. ロール インスタンスが起動したら、サーバー エクスプローラーを開きます。

  4. [Azure\Cloud Services] ノードを展開します。

  5. ロール インスタンスを一覧表示するには、デプロイを展開します。 次に、ロール インスタンスを右クリックします。

  6. [IntelliTrace ログの表示] を選択します。

  7. IntelliTrace の概要で、Exception データに移動しそのノードを展開します。

  8. 例外の一覧で、System.IO.FileNotFoundExceptionType 列の値を含む行を探します。 対応する Message 列の値は、次のテキストのようになります。

    ファイルまたはアセンブリ 'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' またはその依存関係のいずれかを読み込めませんでした。 指定されたファイルが見つかりません。

原因 1: RoleInstanceStartupTimeoutError が原因でクラウド サービス操作が失敗する

Azure Cloud Services (延長サポート) の 1 つ以上のロール インスタンスの起動に時間がかかる場合があります。 または、ロール インスタンスがリサイクルされているか、ビジー状態でスタックしていて、想定どおりに開始されていない可能性があります。 このような場合は、 RoleInstanceStartupTimeoutError ロール アプリケーションのエラー メッセージが表示されます。

ロール アプリケーションに次の 2 つの部分が含まれていて、これがロールのリサイクルを引き起こす可能性があります。

ロールが停止すると、サービスとしてのプラットフォーム (PaaS) エージェントによってロールが再起動されます。

スタートアップ タスクが原因で問題が発生しているかどうかを確認するには、次の手順に従います。

  1. リモート デスクトップを使用して、問題のあるロール インスタンスに接続してみてください。

  2. ロール インスタンスに接続したら、 Start を選択し、 Task Manager を検索して選択します。

  3. プロセスの一覧を表示するには、タスク マネージャー[詳細] タブを選択します。

  4. WaIISHost.exe (WebRole の場合) またはWaWorkerHost.exe (WorkerRole の場合) のプロセスがあるかどうかを確認します。 このどちらのプロセスも見つからない場合は、スタートアップ タスクが失敗している可能性があります。

この問題がスタートアップ タスクが原因で発生していることを確認できましたか? その場合は、次の解決策を使用できます。 ただし、この解決策を使用できるのは、スタートアップ タスクが単純な、つまりフォアグラウンド タスクである場合のみです。 この解決策は、バックグラウンドのスタートアップ タスクには適用されません。 それらは、ロールのスタートアップと並行して、非同期的に実行されます。

解決策: スタートアップ タスク スクリプトをデバッグする

スタートアップ タスク エラーのトラブルシューティングを行うには、VM の起動時に実行されるスクリプトをデバッグします。 このスタートアップ タスク スクリプトは Startup.cmd というファイルです。 スクリプトの問題を調査するために、次のオプションから選択できます。

  • C:\Resources\WaHostBootstrapper.log ログ ファイルを確認します。 このファイルは、 WaHostBootstrapper.exe プロセスのログです。 このプロセスは、スタートアップ タスクに関係します。 これについては、Windows Azure クラシック VM アーキテクチャのワークフローで説明されています。 次に、 Startup.cmdの実行に関連するエラーまたは例外を検索します。 終了コードが 0かどうかを特に確認します。 そうでない場合は、スタートアップ タスクは完了しましたが、エラーが発生しています。 スクリプトの終了コードに関連するログがない場合、スタートアップ タスクは引き続き実行中です。

  • ビジネスへの影響が予想されるために運用環境でスタートアップ タスク スクリプトを自由に実行できない場合は、コマンド ラインでログ メカニズムをカスタマイズします。 たとえば、スクリプト コマンドのキー情報の出力をファイルにリダイレクトできます。 これを行う 1 つの方法は、コマンドの末尾に > "%TEMP%\StartupLog.txt" を追加することです。

  • コマンド ラインで、スタートアップ タスク スクリプトを手動で実行します。 WebRole ロールまたは WorkerRole ロールのこのスクリプトの場所を次の表に示します。

    Role スクリプトの場所
    WebRole E:\approot\bin\Startup.cmd
    WorkerRole E:\approot\Startup.cmd

原因 2: DLL またはアセンブリが見つかりません

状態間を循環する応答しないロール インスタンスとロール インスタンスは、DLL またはアセンブリが見つからないことが原因である可能性があります。

DLL またはアセンブリが欠落している場合の症状を、次に示します。

  • ロール インスタンスは、 InitializingBusy、および Stopping 状態を循環します。

  • ロール インスタンスが Ready 状態に移行しましたが、ページは Web アプリケーションに表示されません。

Web サイトが Web ロールに配置されていて、DLL がない場合は、次のサーバー ランタイム エラー メッセージが表示されることがあります。

"/" アプリケーションのサーバー エラー。

ランタイム エラー

説明: サーバーでアプリケーション エラーが発生しました。 このアプリケーションの現在のカスタム エラー設定により、アプリケーション エラーの詳細がリモートで表示されなくなります (セキュリティ上の理由から)。 ただし、ローカル サーバー コンピューターで実行されているブラウザーで表示することはできます。

Details: この特定のエラー メッセージの詳細をリモート コンピューターで表示できるようにするには、現在の Web アプリケーションのルート ディレクトリに "web.config" 構成ファイルを含む<customErrors> タグを作成してください。 この <customErrors> タグの "mode" 属性を "Off" に設定する必要があります。

解決策: 不足している DLL とアセンブリを解決する

欠落している DLL とアセンブリのエラーを解決するには、次のようにします。

  1. Visual Studio でソリューションを開きます。

  2. ソリューション エクスプローラーで [参照] フォルダーを開きます。

  3. エラー メッセージで識別されるアセンブリを選択します。

  4. [プロパティ] で、[ローカル コピー] プロパティを [True] に設定します。

  5. クラウド サービスを再デプロイします。

エラーが表示されなくなったことを確認したら、サービスを再デプロイします。 デプロイを設定するときは、[.NET 4 のロールに対して IntelliTrace を有効にします] チェックボックスをオンにしないでください。

次のステップ

詳細

クラシック クラウド サービスでの初期構成、実行、およびスタートアップ タスクの例については、次の記事を参照してください。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。