Azure Functions 在不执行任何操作的情况下达到超时

Azure Function reaching timeout without doing anything

我在 Node.js 中有一个 Azure Function 应用程序,其中包含几个队列触发的函数。

这些功能运行良好,直到我在函数日志中看到几次超时。 从那时起,我的 none 个触发函数实际上在做任何事情。他们只是在执行第一行代码 之前甚至 保持超时,这是一个 context.log() 语句来显示执行时间。

这可能是什么原因?

在 Azure 门户中检查您的功能存储帐户,您可能会看到非常高的文件监控 activity。

这可能是由于 Azure 文件之间的交互以及需要大型 node_modules 树。一旦模块被请求一次,函数将快速执行,因为模块被缓存,但这些超时会使函数应用程序进入超时 -> 重启循环。

对此有很多讨论,还有一个可能的改进(在服务器端模块上使用 webpack)here

其他可能性:

  • 尽可能减少节点模块的数量
  • 移动到专用而不是消费计划(它运行在性能更好的不同文件系统上)
  • 使用不受这些限制的 C# 或 F#