Azure功能-扩展和内存限制

Azure功能-扩展和内存限制,azure,azure-functions,Azure,Azure Functions,我有一些代码,我正在考虑将其放入Azure函数中,我有一个关于内存限制和函数如何扩展的问题/担忧 在高端,该应用程序一次执行可以使用大约800 mb的内存,因此如果我可以使用的最大内存是1536mb,那么我只能执行一次并发执行,而不会耗尽内存 我的理解是,最多可以有10个实例,有x个并发执行,但是如果最大容量只允许我运行1个执行而不超时,这是否意味着我需要手动将最大并发执行设置为1,并且它将自动缩放到最多10个实例,也就是说我一次只能执行10次死刑 如果是这样的话,那就有点糟糕了,因为我认为大多

我有一些代码,我正在考虑将其放入Azure函数中,我有一个关于内存限制和函数如何扩展的问题/担忧

在高端,该应用程序一次执行可以使用大约800 mb的内存,因此如果我可以使用的最大内存是1536mb,那么我只能执行一次并发执行,而不会耗尽内存

我的理解是,最多可以有10个实例,有x个并发执行,但是如果最大容量只允许我运行1个执行而不超时,这是否意味着我需要手动将最大并发执行设置为1,并且它将自动缩放到最多10个实例,也就是说我一次只能执行10次死刑

如果是这样的话,那就有点糟糕了,因为我认为大多数执行所需的内存要比这个少得多

这是一个文件操作函数,因此我可以根据输入文件大小合理准确地猜测将使用多少内存,因此如果我根据输入大小重新构造后端以填充各种队列,我可以为高端内容设置一个队列(每个实例一次只允许执行一次),然后将其划分为其他大小的队列,并手动调整最大并发实例数,使用特定的函数针对其关联的队列

e、 g.1对于任何小于1mb的文件,请排队,尽可能多地执行=1个不受限制的函数。
1个用于1mb-10mb输入文件的队列,限制为20个并发执行。 等

感觉工作比应该做的要多,但也不是太痛苦

这似乎是一个明智的方法,还是有更简单的方法


您到底是如何限制并发执行的数量的?

以下是一些背景说明:

  • Blob处理由队列在后台处理。当我们发现一个新的(或修改过的)blob时,我们将该blob信息放入一个队列消息并将其排队。这意味着host.json中针对队列的可用设置也适用于blob处理
  • 函数的队列配置在主机级别,并由所有队列使用。要使您的场景正常工作,您需要为每批文件大小创建一个函数应用程序,并在中为该应用程序配置
    队列
    ->
    batchSize
    。因为您可能会遇到内存限制,这可能是您的最佳选择,因为您不会在同一主机上并行运行多个函数
我不相信我们会在任何地方发布最大可用实例数,但我可以告诉你,10不再是一个限制。这是一个很早就被取消的限制。你最好的办法是尝试一下,看看你的规模有多大。如果添加,您可以很容易地看到实时流中当前运行的实例数