我有一些代码,我正在考虑将其添加到Azure函数中,并且我对内存限制以及函数如何扩展有疑问/担忧。
在高端,应用程序可以使用大约800 MB的内存进行单次执行,所以如果我可以使用的最大内存是1536mb,那么我只能有1个并发执行而不会耗尽内存。
我的理解是最多可以有10个实例,有x个并发执行,但是如果最大容量只允许我运行1而没有超时,这是否意味着我需要手动设置最大值并发执行到1,它会自动扩展到最多10个实例,这意味着我一次只能执行10次总执行?
如果是这样,那是一种无赖,因为我希望大多数执行都需要比这更少的内存。
这是一个文件操作函数,所以我可以根据输入文件大小合理准确地猜测将使用多少内存,所以如果我重组后端以根据输入大小填充各种队列,我可以有1个队列用于高端内容(每个实例一次只允许执行1次),然后将其划分为其他大小的队列,并手动调整最大并发实例,并使用针对其关联队列的特定功能。
e.g。对于任何小于1mb的文件,1个队列,尽可能多的执行= 1个不受限制的功能 1个队列,1mb-10mb输入文件,限制为20个并发执行。 等
感觉就像应该做的更多的工作,但这不是太痛苦。
这看起来是一种明智的做法,还是有更简单的方法?
您如何限制并发执行的数量?
答案 0 :(得分:1)
几个背景解释:
queues
- >该应用的host.json batchSize
。因为您可能会遇到内存限制,所以这可能是您最好的选择,因为您不会在同一主机上并行运行多个功能。我不相信我们会在任何地方发布最大可用实例数,但我可以告诉你,10不再是限制了。这是一个早期的限制,此后一直被取消。你最好的选择是尝试一下,看看你如何扩展。如果添加Application Insights support,您可以非常轻松地查看当前在直播中运行的实例数量。