首页 > 解决方案 > Azure 函数到 Azure SQL - 性能和扩展

问题描述

我有一个写入 Azure SQL 的 Azure 函数。它当前从主题中读取,但可以更改为从队列中读取。是否有从主题或队列中读取的偏好?

每小时有 20 万条消息触及该主题。我需要将每小时 20 万条消息写入 Azure SQL。在处理过程中,我经常收到错误“数据库的请求限制为 60 并且已达到。”。我了解我已达到最大数据库连接数。有没有办法阻止 Azure 扩大 Azure Function 实例的数量?共享 SQL 连接的最佳方式是什么?

还有其他 Azure 函数到 Azure SQL 的性能提示吗?

谢谢,

理查德

标签: sqlazureazure-sql-databaseazure-functions

解决方案


使用服务总线没有明确定义的方法来实现这一点。您可能想玩host.json文件并更改maxConcurrentCalls参数:

"serviceBus": {
  // The maximum number of concurrent calls to the callback the message
  // pump should initiate. The default is 16.
  "maxConcurrentCalls": XYZ,
}

但它只控制单个实例的并行调用量。

我建议您查看事件中心。您至少获得 2 项奖金:

  1. 您可以切换到成批的事件,而不是 1 接 1 的处理。这通常是向 SQL 表中插入大量数据的一种非常有效的方法。

  2. 最大并发受事件中心分区数量的限制,因此您知道并发调用的硬限制。

不利的一面是,您将失去一些服务总线功能,如死字、自动重试等。


推荐阅读