我将我的一些Azure功能托管在App Service计划上,以使该功能能够与虚拟网络通信(通过点对点)。这些功能大多数都是基于计时器的,这意味着它们将在每月,日期,小时等的特定时间触发。
在查看指标时,我注意到功能应用程序在我的应用程序服务计划中的所有实例上运行。我可以看到为什么这对于诸如队列触发或HTTP触发函数之类的东西来说是一个很好的选择。
那我的计时器触发功能如何?我只想确保每个功能都按配置的时间表运行。运行10个功能主机实例(在我的应用程序服务计划中有10个实例的情况下)似乎占用了大量内存,因为每个功能主机至少使用30 mb的内存(10个主机总计300 mb)实例)。
有人建议吗?我知道将它们转移到基于消耗的功能会更有效,但是那样我就不可能连接到虚拟网络。
更新:有一个名为WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT
的配置选项,但这仅适用于消耗计划。
答案 0 :(得分:0)
应用服务计划将专用于您的虚拟机来运行您的功能。如果您有运行时间长,连续的CPU和内存消耗算法,则可以选择此选项,以针对功能操作选择最经济高效的托管计划。
App服务计划中功能的内存使用仅限于VM的配置。在消费计划中,内存使用限制为1.5 GB。在App服务计划中,您的功能可能会消耗超过1.5 GB的内存。
这里是您可以参考的article。
答案 1 :(得分:0)
当前,应用服务计划上的Azure Function应用将在该计划扩展到的所有实例上运行。如果您的功能全部由计时器触发,则将其移至单实例应用服务计划将减少您的内存使用量。但是,听起来您还有其他一些触发器类型,它们会因坚持10实例计划而从扩展中受益,在这种情况下,将您的功能拆分起来就没什么意义了。