2017-04-25 11 views
1

複数のジョブホストを起動しているAzure関数に奇妙な問題が発生しています。最初のホストは起動しているようで、それ以降のホストはシングルトンロックを取得しようとするとエラーが発生します。いずれかのジョブを無効にすると、実際には目立つようになり、「関数ランタイムを開始できません」というエラーメッセージが表示されます。私は自分のタイマーのトリガが設定 "0 */30 * * * *"ごとに複数回実行されていることに気づいたので、この状況を深く掘り下げました。機能アプリに関するAzure機能複数のジョブホスト

Pid 1 2017-04-25T13:30:06.680 Staging table updated successfully. 
Pid 1 2017-04-25T13:30:06.680 Updating the base table from the staging table. 
Pid 2 2017-04-25T13:30:06.680 Staging table updated successfully. 
Pid 2 2017-04-25T13:30:06.680 Updating the base table from the staging table. 

詳細:
- Azureの機能は、ダイナミック/消費計画の下で実行されている
-
- 2つの機能から実行されている - クラスライブラリから実行している5つの機能は(https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/このガイドに続きます)タイマー、30分ごとに "0 */30 * * * *"
- 1 EventHubトリガ受信 - のIoTハブから
をアップロードするためのコンテナを見て1ブロブトリガ - 開発時間のため
を待っている間に無効1タイマートリガーIoTをハブ(ここではありませんので、重負荷まばらなイベント)

階段からのイベントが再現する:
を - 動的計画で
をAzureの機能をアップスタンド - ポータルでAzureの機能を作成します(前にこれをやっていない問題に遭遇しました)
-
上記ガイドからWebDeployを使用して、VSTSの機能を展開する - の機能が
を開始しようとしたことを確認してください - 再起動
を強制する機能の一つを無効に - エラーメッセージが

の表示を開始/無効とすぐに機能が有効になっているとして、私はAzureの機能アプリケーションサービスを停止した
Link to log file

それはそれがないシングルトンのロックを獲得することができますかどうかを確認するためにロックフォルダを削除、しかし:

ログ機能から引き出さまたはWebを使用してVSTSからプッシュするとエラーが返されます。 Azure関数を数回再構築しましたが、結果は同じです。

このシナリオで監視プロセスを作成できるように、この問題のトラブルシューティング方法を理解しようとしています。

編集
倍とセットアップが実行された機能(機能のすべてはこれに非常によく似て)次
function.json

{ 
    "scriptFile": "..\\bin\\IngestionFunctionClassLibrary.dll", 
    "entryPoint": "IngestionFunctionClassLibrary.Functions.AnalyticsUpdate.Run", 
    "bindings": [ 
    { 
     "name": "myTimer", 
     "type": "timerTrigger", 
     "direction": "in", 
      "schedule": "0 */30 * * * *" 
    } 
    ], 
    "disabled": true` 
} 

project.json

{ 
    "frameworks": { 
    "net46":{ 
     "dependencies": { 
     } 
    } 
    } 
} 
+0

Azure関数の実装は関係ありませんか?あなたはその部分を投稿しませんでした。 –

+0

ありがとうございましたJeroen、私は倍を実行して見たものの関数定義を含めるように更新しました。 –

+0

"Azure Function Multiple Job Hosts"がそれをうまく伝えないため、問題のタイトルを更新して問題の内容を反映させてください。 –

答えて

0

のようなメッセージシングルトンロックを取得できませんは実際にはエラーではなく、単なる情報メッセージです。 Function Appが複数のインスタンスにスケールアウトされたことを意味します(あなたのケースでは約5)。いくつかのリースリソースが本質的に1つのインスタンスによって保持される(シングルトンの動作をサポートする)ことができます。インスタンスがリースを取得すると、他のすべてのインスタンスがこのメッセージを表示します。

関連する問題