【问题标题】:CPU / DTUs getting maxed out on Azure SQL Database, but top queries less than 1% and database only a few MBCPU / DTU 在 Azure SQL 数据库上达到极限,但热门查询不到 1%,数据库只有几 MB
【发布时间】:2019-10-09 12:36:31
【问题描述】:

我刚刚启动了一个 Azure SQL 数据库,但 DTU 和 CPU 使用率表现异常。数据库每分钟只接收大约 30 个请求,并且 CPU/DTU 将在几个小时内极低,然后跃升至 100% 并保持在那里(触发此的请求数量没有增加)。当我单击查看热门查询时,它们都没有超过 1% 的 cpu 使用率。我开始了 5 个 DTU 计划,昨天升级到 20 个 DTU,并且正在发生相同的行为。知道还有什么可能导致 DTU/CPU 最大化吗?见下图:

https://i.imgur.com/LdbYTPw.png

https://i.imgur.com/jlus3FM.png

提前感谢您的任何建议!

编辑:我越来越近了,我在错误日志中发现了这些重复的条目。 (每秒钟大约 8 - 10 个)

“传入的请求参数过多,服务器最多支持2100个参数,减少参数数量,重新发送请求。”

问题是,查询数据库的应用服务只执行简单的选择、更新和插入……其中没有使用任何复杂的 WHERE IN 语句。此外,每个查询都包含在一个 try/catch 块中,我从未见过这样的异常。

这些大型查询可能来自哪里?

【问题讨论】:

  • 听起来你发现了错误。我的猜测是你的应用服务正在做一些你想象之外的事情。 Try/catch 块很棒,但是你对 catch 中的异常做了什么?如果你吞下它们,那对你没有好处。我建议将 Application Insights(在一定数据量下免费)添加到您的 Web 应用程序中,以了解正在发生的事情。

标签: azure azure-sql-database


【解决方案1】:

您只看到了 DTU 图的 CPU 组件,那么“Data IO”和“Log IO”组件呢?查看 3 个部分的前 5 个查询,如果您找到以“SELECT Statman ...”开头的查询,请告诉我。如果您看到这种情况,则表明自动更新统计信息进程正在创建这些 DTU 峰值。

【讨论】:

    【解决方案2】:

    我建议安装 sp_whoisactive 脚本,以便您可以更轻松地查看正在发生的事情:

    http://whoisactive.com/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 2014-11-12
      相关资源
      最近更新 更多