You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

限制Blob存储触发Azure函数的事件或函数实例数量

Azure Function与Service Bus连接数超限问题处理

架构概述

  • Blob存储容器配置事件触发,Blob创建时自动触发Azure Function
  • Azure Function读取XML文件,依据XML标签将消息发送至Service Bus对应队列(Service Bus包含多个队列)
  • 多线程应用从Service Bus队列拉取消息并执行业务操作

问题描述

向Blob存储批量上传约25000个文件时,Azure Function会创建大量ServiceBusClient连接发送消息,触发Service Bus最大连接数(5000)限制,出现并行连接数超限错误。已尝试配置Azure Function及ServiceBusClient的重试策略,希望通过其他方案规避该问题。

解决方案

1. 限制Azure Function实例数量至2000

可以通过Azure平台配置直接限制Function应用的最大并发实例数,从源头控制并发连接的生成:

  • 若使用弹性Premium计划或专用App Service计划:在Azure Portal进入Function应用,切换至「横向扩展」页面,设置「最大实例数」为2000
  • 若使用消费计划:通过WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT应用设置限制实例数,将该参数值设为2000即可

2. 减慢Blob存储事件触发速度

通过配置Blob存储的事件订阅参数,降低事件向Function的推送速率:

  • 启用事件批处理:在Blob存储的事件订阅设置中,开启批处理功能,设置合理的「批大小」(如每次批量推送100个事件)和「最大延迟时间」(如等待5秒再推送批次),减少单次触发的Function数量
  • 设置速率限制:在事件订阅中配置「速率限制」,限制每秒推送至Function的事件数量(如设置为每秒300个),从上游控制Function的触发频率

额外优化建议(可选)

将ServiceBusClient声明为静态实例,在Function的静态构造函数中初始化,确保每个Function实例复用同一个ServiceBusClient,避免每次触发都创建新连接,从根本上减少连接数消耗。

内容的提问来源于stack exchange,提问作者Professeur Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 09:00:59