2017-04-25 25 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)。有一些租赁资源本质上只能由一个实例持有(以支持单身人士行为)。所以一旦一个实例获得租约,所有其他人将显示此消息。