2

4 つのワーカー インスタンスを使用して、Azure で 1 つのサービスを実行しています。ワーカー インスタンスを 5 つまでスケールアップすると、開始された最初のインスタンスが「ビジー」状態になります。何故ですか?スケールアップ中はどうなりますか? Azure はすべてのスタートアップ タスクを再実行しますか? 私は非常に混乱しており、これに関するドキュメントが見つからないようです。

5 つのインスタンスまでスケールアップした後、最初のインスタンスのステータスが次のように変わります。

Busy (Waiting for role to start... Application startup tasks are running. [2014-08-12T18:36:52Z])

そして、そこで実行されていた Java プロセスが停止します。なぜこれが起こるのでしょうか?!

どんな助けでも大歓迎です。

スタートアップ.cmd

REM   Log the startup date and time.
ECHO Startup.cmd: >> "%TEMP%\StartupLog.txt" 2>&1
ECHO Current date and time: >> "%TEMP%\StartupLog.txt" 2>&1
DATE /T >> "%TEMP%\StartupLog.txt" 2>&1
TIME /T >> "%TEMP%\StartupLog.txt" 2>&1

REM enable ICMP
netsh advfirewall firewall add rule name="ICMPv6 echo" dir=in action=allow enable=yes protocol=icmpv6:128,any

ECHO Starting WebService >> "%TEMP%\StartupLog.txt" 2>&1
tasklist /FI "IMAGENAME eq java.exe" 2>NUL | find /I /N "java.exe" >NUL 2>&1
if "%ERRORLEVEL%"=="0" GOTO running

SET %ERRORLEVEL% = 0
START /B java -jar WEB-SERVICE-1_0--SNAPSHOT.jar app.properties >> "%TEMP%\StartupLog.txt" 2>&1

:running
SET %ERRORLEVEL% = 0
4

2 に答える 2

5

スケール操作中、Azure は、Changing イベントを介して RoleEnvironmentTopologyChange を既存のすべてのインスタンスに送信します。これにより、インスタンス間の通信を可能にするために、これらのインスタンスが新しいロール インスタンスを検出できるようになります。これは、内部エンドポイントが定義されている場合にのみ発生することに注意してください (RDP をオンにすると、暗黙的に内部エンドポイントが取得されます)。

デフォルトでは、これらのトポロジの変更は実行中のインスタンスには影響しません。ただし、Changing イベントをサブスクライブして設定するe.Cancel=Trueと、ロール インスタンスがリサイクルされ、スタートアップ タスクが再度実行されます。

トポロジの変更の詳細については、 http://azure.microsoft.com/blog/2011/01/04/responding-to-role-topology-changes/ を参照してください

したがって、ここには 2 つの問題があります。

  1. あなたの役割がリサイクルから回復できないのはなぜですか? これは重要な問題であり、信頼できるサービスを提供するために修正する必要があります。http://blogs.msdn.com/b/kwill/archive/2013/08/09/windows-azure-paas-compute-diagnostics-data.aspxのトラブルシューティング ワークフロー、特に次のシナリオ 3 から始めることができます。 http://blogs.msdn.com/b/kwill/archive/2013/09/06/troubleshooting-scenario-3-role-stuck-in-busy.aspx .
  2. トポロジの変更に応じてロール インスタンスをリサイクルするのはなぜですか? 変更イベント ハンドラーを確認し、設定していないことを確認しますe.Cancel=true
于 2014-08-12T23:09:32.720 に答える