次の方法で共有


ProcessorEngine ロールがビジー状態でスタックしています。つまり、ロールを開始するための準備中...システムが初期化中

この記事では、クラウド サービス アプリケーションを Azure にデプロイするときに ProcessorEngine ロールがビジー状態でスタックする問題のトラブルシューティングについて説明します。

元の製品バージョン: API Management サービス
元の KB 番号: 4464894

Note

ラボの 4 番目のシナリオである Azure Cloud Service トラブルシューティング シリーズに関する記事を参照してください。 問題を再現するには、 Super Convertor アプリケーションのラボセットアップ手順 従っていることを確認

現象

クラウド サービス アプリケーションを Azure にデプロイすると、 ProcessorEngine ロールが Busy 状態で停止し、そのロールから抜け出されることはありません。 Azure portal ブレードに、次のメッセージが表示されます。

ロールを開始する準備中...システムが初期化中です。

トラブルシューティングの手順

ロールが Busy 状態でスタックしている場合は、ロール インスタンスの実行を妨けているアプリケーションに問題があることを示します。 アプリケーション コードを調べて、 StatusCheck イベントが処理されているかどうかを確認し、 Microsoft Azure ロール アーキテクチャWaHostBootstrapper プロセスが担当します。

  1. ロールの構成を読み、ロールを構成して実行するための適切なタスクとプロセスをすべて起動します。
  2. すべての子プロセスを監視します。
  3. ロール ホスト プロセスで StatusCheck イベントを発生させます。

トラブルシューティングを開始する最適な場所は、RDP を使用してインスタンスにリモート接続し、パス C:\Resourcesの下WaHostBootstrapper.logファイルを調べることです。 フォルダーを確認すると、 WaHostBootstrapper が 1 回だけ起動しようとしただけであり、エラーが原因でリサイクルされていないことを意味するログ ファイルが 1 つだけ存在する場合があります。 WaHostBootstrapper.log ファイル内の内容を確認します。

[00003604:00002604, 2018/08/13, 03:08:21.214, ERROR] <- WapXmlReadRoleModel=0x1 [00003604:00002604, 2018/08/13, 03:08:21.979, ERROR] <- WapXmlReadContainerId=0x1 [00003604:00002604, 2018/08/13, 03:08:22.026, ERROR] <- WapGetVirtualAccountName=0x1 [00003604:00002604, 2018/08/13, 03:08:22.026, ERROR] <- WapGetAppCmdPath=0x1 [00003604:00002604, 2018/08/13, 03:08:22.026, ERROR] <- WapSetDefaultEnvironment=0x1 [00003604:00002604, 2018/08/13, 03:08:22.014, ERROR] <- WapGetAppHostConfigPath=0x1 [00003604:00002604, 2018/08/13, 03:08:22.045, ERROR] <- GetDebugger=0x1 [00003604:00002604, 2018/08/13, 03:08:22.092, ERROR] <- GetStartupTaskDebugger=0x1 [00003604:00002604, 2018/08/13, 03:08:22.389, ERROR] <- WapGetEnvironmentVariable=0x800700cb **[00003604:00002604, 2018/08/13, 03:08:22.405, WARN ] Executing Startup Task type=0 rolemodule=(null) cmd="E:\approot\.\startup.cmd"[00003604:00002604, 2018/08/13, 03:08:22.405, WARN ] Executing "E:\approot\.\startup.cmd" .**

上記のログから、ディレクトリの下に存在 startup.cmd という名前のスタートアップ スクリプトの実行中にプロセス E:\approot スタックしているように見えます。 最後のエントリのタイムスタンプを比較する場合 (2018/08/13、 03:08:22.405) と現在のシステム時刻 (2018/08/13、04:16:13.132) では、ホスト ブートストラップ プロセスがスタートアップ スクリプトを 1 時間以上実行しようとしていることがわかります。 注目すべき点は、 Startup Task type=0 です。これは、実行を続行する前にタスクが終了するのをシステムが待機させる単純なスタートアップ タスクであることを意味します。 スタートアップ タスク 種類の詳細については リンクを参照してください。

Microsoft Azure Bootstrapper イベント ビューアー ログには、同じ情報が表示されます。

イベント ビューアー ログのスクリーンショット。

そのため、次の手順では、このスタートアップ スクリプトの機能を確認します。 スクリプトは実行可能ファイル 'setup.exe' を実行しており、コマンド ライン 'configuration.xml' を受け取ります。 スクリプト処理の出力は、RoleTemp ディレクトリの下に作成された 'StartupLog.txt' ファイルに記録されます。

REM If WINWORD.EXE and EXCEL.EXE exists, then required office binaries are already installed.
IF "%ComputeEmulatorRunning%" == "true" (
GOTO Finish
)ELSE (
IF EXIST "D:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE" (
ECHO Startup has already configured and installed required word processing binaries. Exiting. >> "%TEMP%\StartupLog.txt" 2>&1
GOTO Finish
)
IF EXIST "D:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE" (
ECHO Startup has already configured and installed required excel processing binaries. Exiting. >> "%TEMP%\StartupLog.txt" 2>&1
GOTO Finish
)
REM Run your real exe task
ECHO Running setup.exe >> "%TEMP%\StartupLog.txt" 2>&1
start /wait %~dp0setup.exe /configure %~dp0configuration.xml >> %TEMP%\StartupLog.txt 2>>&1
ECHO Creating Desktop directory >> "%TEMP%\StartupLog.txt" 2>&1
MKDIR "D:\Windows\System32\config\systemprofile\Desktop"
IF %ERRORLEVEL% EQU 0 (
REM The application installed without error.
ECHO The application installed without error. > "%RoleRoot%\Success.txt"
) ELSE (
REM An error occurred. Log the error and exit with the error code.
DATE /T >> "%TEMP%\StartupLog.txt" 2>&1
TIME /T >> "%TEMP%\StartupLog.txt" 2>&1
ECHO An error occurred running the setup. Errorlevel = %ERRORLEVEL%. >> "%TEMP%\StartupLog.txt" 2>&1
EXIT %ERRORLEVEL%
)
)
:Finish
REM Exit normally.
EXIT /B 0

C:\Resources\temp\{Deployment ID}.ProcessorEngine\RoleTempパスに移動し、ログ ファイル 'StartupLog.txt' を分析します。 基本的には 、"**setup.exeの実行" と表示されます。これは、スクリプトがsetup.exeの実行を完了していない、まだ実行されていることを意味します。 コマンド プロンプトから実行可能ファイルを実行しているときに、 E:\approot の場所に 'configuration.xml' が見つからないため、スタートアップ タスクが失敗する可能性があります。 それが問題の根本原因です。

Visual Studio では、スタートアップ バッチ ファイルまたはその他の依存ファイルの Copy to Output Directory プロパティを Copy Always に設定して、スタートアップ バッチ ファイルが Azure 上のプロジェクトに適切にデプロイされるようにする必要があります (Web ロールの場合は approot\bin 、worker ロールの場合は approot )。 ただし、この場合、 Copy to Output Directory 'configuration.xml' ファイルの コピーしない に設定されました。

configuration.xml ファイルのプロパティを示すスクリーンショット。

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

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