我遇到了启动多个作业主机的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": {
}
}
}
}
您确定Azure函数实现不相关吗?您没有发布该部分。 –
谢谢Jeroen,我已经更新了包含我看到的运行倍数的函数定义。 –
请更新问题标题以反映问题所在,因为只有“Azure Function Multiple Job Host”没有很好地表达。 –