【问题标题】:Going aync with Dapper might be causing SQL Azure "The request limit for the elastic pool is 100 and has been reached"与 Dapper 同步可能会导致 SQL Azure“弹性池的请求限制为 100 且已达到”
【发布时间】:2020-02-18 03:13:09
【问题描述】:

我最近开始在 Azure 应用服务上运行的应用记录这些错误,并使用 dotnetcore v2.2 和 SQL Azure 提供它:

The request limit for the elastic pool is 100 and has been reached.

当这些开始出现时,我改变了两件事:

  • 我将一些东西移到了 Azure Functions (C#/Core) 中,但我认为它们可能不是问题的根源,因为它们每分钟可能只触发两次。
  • 我重构了所有数据调用(通过 Dapper 进行)以使用 async 变体。我没有任何关于不等待的可能性的编译器警告,所以我相信它通常是正确的,但感觉这不是结果。

该图显示了池中仅此应用程序中工作人员的尖峰使用情况。旧 .Net 上的旧版本应用程序甚至几乎没有在这里注册,它使用类似的代码获得更多流量。我不确定从哪里开始寻找解决这个问题的方法。我个人没有遇到过这个错误,但是每天有数百个错误被记录下来,所以有人获得了次优的用户体验。

【问题讨论】:

    标签: azure .net-core azure-sql-database dapper azure-web-app-service


    【解决方案1】:

    请尝试在数据库级别将 Max Degree of Parallelism 更改为 1。使用对您的数据库具有管理权限的登录名运行以下语句。

    ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 1;
    

    更好的选择可能是使用 OPTION (MAXDOP 1) 提示运行来自应用程序的数据库语句。

    【讨论】:

    • 我检查了...它已经设置为 1,这似乎与我读过的所有内容背道而驰。
    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 2021-04-17
    • 2014-02-16
    • 1970-01-01
    • 2012-05-14
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多