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#
我在 Node.js 中有一个 Azure Function 应用程序,其中包含几个队列触发的函数。
这些功能运行良好,直到我在函数日志中看到几次超时。
从那时起,我的 none 个触发函数实际上在做任何事情。他们只是在执行第一行代码 之前甚至 保持超时,这是一个 context.log()
语句来显示执行时间。
这可能是什么原因?
在 Azure 门户中检查您的功能存储帐户,您可能会看到非常高的文件监控 activity。
这可能是由于 Azure 文件之间的交互以及需要大型 node_modules
树。一旦模块被请求一次,函数将快速执行,因为模块被缓存,但这些超时会使函数应用程序进入超时 -> 重启循环。
对此有很多讨论,还有一个可能的改进(在服务器端模块上使用 webpack)here。
其他可能性:
- 尽可能减少节点模块的数量
- 移动到专用而不是消费计划(它运行在性能更好的不同文件系统上)
- 使用不受这些限制的 C# 或 F#