2017-04-25 70 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. 

詳細說明:
- 天青功能的動態/消耗計劃下運行
- 從類別庫運行5層的功能(遵循這個指南 - https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/
- 2功能從一個執行計時器,每隔30分鐘 「0 */30 * * * *」
- 1團塊觸發看的容器用於從上傳的IoT集線器
- - 1 EventHub觸發接收1在等待開發時間
禁用計時器觸發從物聯網中心事件(稀疏事件,因此在這裏沒有沉重負荷)

重現步驟:
- 站起來Azure的功能與動態規劃
- 在門戶網站創建Azure的功能(跑進問題不這樣做之前)
- 從部署VSTS的功能,使用WebDeploy從導向上述
- 確保功能試圖啓動
- 禁用的功能之一來強制重啓
- 錯誤信息開始顯示

日誌從功能拉:
Link to log file

我已經停止了Azure的功能應用服務,刪除鎖文件夾,看看是否有幫助收購它確實單鎖,但只要一個功能被啓用/禁用或者使用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 Host」沒有很好地表達。 –

回答

0

看起來像的消息無法獲取Singleton鎖實際上不是錯誤,而僅僅是信息性消息。這意味着你的功能應用程序被擴展到多個實例(在你的情況下約5)。有一些租賃資源本質上只能由一個實例持有(以支持單身人士行爲)。所以一旦一個實例獲得租約,所有其他人將顯示此消息。