Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure函数最大并发消耗单位_Azure_Azure Sql Database_Azure Functions - Fatal编程技术网

Azure函数最大并发消耗单位

Azure函数最大并发消耗单位,azure,azure-sql-database,azure-functions,Azure,Azure Sql Database,Azure Functions,我在消费计划上有一个函数应用程序,它带有一个队列触发函数,可以进行一些数据处理并写入Azure SQL。每次运行大约需要1分钟,我需要同时处理1000条左右的消息。我担心许多这样的运行会同时影响数据库,但我可以让总时间延长一些。 这就是我的host.json目前的样子 { "functionTimeout": "00:09:50", "queues": { "maxPollingInterval": 5000, "visibilityTimeout" :

我在消费计划上有一个函数应用程序,它带有一个队列触发函数,可以进行一些数据处理并写入Azure SQL。每次运行大约需要1分钟,我需要同时处理1000条左右的消息。我担心许多这样的运行会同时影响数据库,但我可以让总时间延长一些。 这就是我的host.json目前的样子

{
    "functionTimeout": "00:09:50",
    "queues": {
      "maxPollingInterval": 5000,
      "visibilityTimeout" : "00:05:00",      
      "maxDequeueCount": 5,
      "batchSize": 4,
      "newBatchThreshold": 2
    }
}
我更关心的是可靠性,而不是总时间,因此我认为改进解决方案的一种方法是限制并发消耗单元的最大数量,并花费更长的时间来处理1000条消息。
有没有办法设置最大并发消耗单位数?对于提高队列触发消耗功能可靠性的其他建议,我们将不胜感激。

目前没有像最大并发消耗单元这样的设置

最好的切换是batchSize,它定义了在单个实例VM上并发处理的消息数量。但是,如果应用程序扩展到多个实例,它们都将运行batchSize of items

因此,精确的调优并不严格,但通常情况下,您应该能够根据实际工作负载调整batchSize,从而达到您想要的效果


最后,您可以将batchSize与fixed App Service Plan结合使用,这为您提供了确切的保证,但无法实现按执行付费的好处。

目前还没有像Max Concurrent Consumption Units这样的设置

最好的切换是batchSize,它定义了在单个实例VM上并发处理的消息数量。但是,如果应用程序扩展到多个实例,它们都将运行batchSize of items

因此,精确的调优并不严格,但通常情况下,您应该能够根据实际工作负载调整batchSize,从而达到您想要的效果


最后,您可以将batchSize与fixed App Service Plan结合使用,这为您提供了确切的保证,但无法实现按执行付费的好处。

考虑到在标准Azure函数中缺少最大并发消耗设置,并且无法完全控制并发处理,你可以考虑使用适当的模式。

由于您指的是运行问题,我希望您已经或可以添加某种触发器,以便启动处理并启动异步工作流。如果这是可能的,您可以依赖Azure持久功能,在那里您可以控制所需的并行级别。但是,这也意味着您需要手动将1000条消息出列,而不是依赖绑定来为您出列

高级工作流示例:

接收通过绑定启动运行的触发器可以是事件网格通知或向队列添加消息,也可以使用轮询外部资源

启动一个持久的功能工作流,将所有消息出列,并使用或使用一种更简单的方法来处理它们,即在没有扇出的情况下按顺序处理1000条消息


考虑到标准Azure函数中MAX并发消耗的设置不足,并且对并发处理有完全控制,可以考虑使用适当的模式。

由于您指的是运行问题,我希望您已经或可以添加某种触发器,以便启动处理并启动异步工作流。如果这是可能的,您可以依赖Azure持久功能,在那里您可以控制所需的并行级别。但是,这也意味着您需要手动将1000条消息出列,而不是依赖绑定来为您出列

高级工作流示例:

接收通过绑定启动运行的触发器可以是事件网格通知或向队列添加消息,也可以使用轮询外部资源

启动一个持久的功能工作流,将所有消息出列,并使用或使用一种更简单的方法来处理它们,即在没有扇出的情况下按顺序处理1000条消息


谢谢您是否认为Azure批处理也是控制实例数量的一个好选择?否则,应用服务计划似乎是一条出路。对消费计划行为的自动缩放不太满意。@donquijote我不是Azure批处理方面的专家,抱歉,谢谢。您是否认为Azure批处理也是控制实例数量的一个好选择?否则,应用服务计划似乎是一条出路。对消费计划行为的自动缩放不满意。@donquijote我不是Azure批处理方面的专家,抱歉