Azure SQL 无服务器数据库 cpu 不断收费
Azure SQL serveless database cpu billed constantly
所以我在设置新的 Azure SQL 无服务器数据库时遇到了一些问题。
我的计费使用率一直很高CPU,这是一笔巨款,我什至在新区域创建了一个新名称的新数据库,新的用户名和密码以及锁定关闭防火墙。备份以及任何自动功能都被禁用。但是一旦部署完成,我就会开始收费。
我有 运行 sql 分析器,甚至没有任何东西触及数据库。
有人以前遇到过这个问题,或者知道从哪里开始寻找?
我们无法 stop/start SQL Azure 服务器。 SQL Azure 数据库驻留在共享主机上。该服务器上还有其他租户。您可以访问数据库,但不能访问相应的托管服务器。确实没有办法为您的 Azure SQL 数据库暂停/停止计费。
或者:
- 我们可以减小 Azure SQL 数据库的大小,这将降低下一个服务小时的成本。
- 如果实在不想为数据库付费,可以将数据库备份到blob存储,删除数据库,需要的时候再恢复。你可以参考这个 documentation.
documentation 对自动暂停启动所需的条件相当清楚:
Autopausing is triggered if all of the following conditions are true
for the duration of the autopause delay:
Number sessions = 0 CPU = 0 for user workload running in the user pool
它还列出了一些可能会阻止自动暂停的条件 - 您应该仔细检查您没有启用以下任何一项:
- 异地复制(活动异地复制和自动故障转移组)。
- 长期备份保留 (LTR)。
- SQL数据同步中使用的同步数据库。与同步数据库不同,集线器和成员数据库支持自动暂停。
- DNS 别名
- Elastic Jobs 中使用的作业数据库
(预览)。
如果您发现您的数据库仍然没有暂停,有多种方法可以追踪活动连接:
- Azure 门户 - 该门户允许您深入了解 activity,只需单击 Intelligent Performance 中心和 Query Performance洞察之刃:
单击查询 ID(在我图片中的红色框中)以关注单个查询。
- 连接到数据库并 运行
sp_who2
或 sp_whoIsActive
(现在托管在 github 上)以列出活动会话。如果您发现活动会话,您可以断开它们(例如活动 SQL Server Management Studio (SSMS) 连接或 Azure Data Studio (ADS))或 kill
它们,只要您知道自己是什么执行并理解 kill 命令的含义。
- 我发现 (here) 的一个稍微不愉快的解决方法是将层切换到标准层,然后再将其切换回无服务器。我希望这只是为了切换层而杀死所有活动连接的效果,而不是它对我有用的根本原因位。
我建议您尝试使用上面的方法 1 或 2 诊断活动连接并报告回来。
我不确定问题是关于自动暂停还是只是从一开始就收取高额费用。
我有同样的问题,即使什么都没有 运行(看起来,根据 sp_whoisactive)...
关于原因,我发现的一个有用的指针是:
https://docs.microsoft.com/en-us/azure/azure-sql/database/serverless-tier-overview#billing 其中
The amount of compute billed is exposed by the following metric:
- Metric: app_cpu_billed (vCore seconds)
- Definition: max (min vCores, vCores used, min memory GB * 1/3, memory GB used * 1/3)
- Reporting frequency: Per minute
This quantity is calculated each second and aggregated over 1 minute.
凶手似乎是“已使用内存 GB”。如果您按比例缩放为 8 个 vCore 和 24GB 最大内存,那么似乎 SQL 服务器会在您执行任何操作后立即获取所有内存并且永远不会让它消失......所以即使您的 CPU 是运行 10% 您拥有所有内存并一直为所有“vCores”付费。
我根本不是 DBA,但我听说这是 SQL 服务器的正常行为,所以要么我错过了一些明显的东西,要么感觉像是在敲诈。
请注意,“应用程序 CPU 收费”指标未以美元报价。它以 vCore 秒为单位引用。
因此,在您的情况下,如果您每分钟大约支付 40 个单位的费用,每计算 0.000145 美元 COST/VCORE/SECOND(我在门户的“计算 + 存储”屏幕上看到的当前费率),那么您每分钟需支付 0.0058 美元,或约 250 美元/月。
不确定您的预算是多少,或者您是否对这个指标有任何困惑,但当我今天早些时候第一次看到我的图表并错误地认为它是以美元报价时,它让我轻微的心脏病发作。
刚意识到有些人仍然会来阅读此答案,答案 is/was,我一直在删除并重新创建数据库,问题自行解决。
所以简短的回答,我不知道是什么修复了它,但现在已经修复了
所以我在设置新的 Azure SQL 无服务器数据库时遇到了一些问题。
我的计费使用率一直很高CPU,这是一笔巨款,我什至在新区域创建了一个新名称的新数据库,新的用户名和密码以及锁定关闭防火墙。备份以及任何自动功能都被禁用。但是一旦部署完成,我就会开始收费。
我有 运行 sql 分析器,甚至没有任何东西触及数据库。
有人以前遇到过这个问题,或者知道从哪里开始寻找?
我们无法 stop/start SQL Azure 服务器。 SQL Azure 数据库驻留在共享主机上。该服务器上还有其他租户。您可以访问数据库,但不能访问相应的托管服务器。确实没有办法为您的 Azure SQL 数据库暂停/停止计费。
或者:
- 我们可以减小 Azure SQL 数据库的大小,这将降低下一个服务小时的成本。
- 如果实在不想为数据库付费,可以将数据库备份到blob存储,删除数据库,需要的时候再恢复。你可以参考这个 documentation.
documentation 对自动暂停启动所需的条件相当清楚:
Autopausing is triggered if all of the following conditions are true for the duration of the autopause delay:
Number sessions = 0 CPU = 0 for user workload running in the user pool
它还列出了一些可能会阻止自动暂停的条件 - 您应该仔细检查您没有启用以下任何一项:
- 异地复制(活动异地复制和自动故障转移组)。
- 长期备份保留 (LTR)。
- SQL数据同步中使用的同步数据库。与同步数据库不同,集线器和成员数据库支持自动暂停。
- DNS 别名
- Elastic Jobs 中使用的作业数据库 (预览)。
如果您发现您的数据库仍然没有暂停,有多种方法可以追踪活动连接:
- Azure 门户 - 该门户允许您深入了解 activity,只需单击 Intelligent Performance 中心和 Query Performance洞察之刃:
单击查询 ID(在我图片中的红色框中)以关注单个查询。
- 连接到数据库并 运行
sp_who2
或sp_whoIsActive
(现在托管在 github 上)以列出活动会话。如果您发现活动会话,您可以断开它们(例如活动 SQL Server Management Studio (SSMS) 连接或 Azure Data Studio (ADS))或kill
它们,只要您知道自己是什么执行并理解 kill 命令的含义。 - 我发现 (here) 的一个稍微不愉快的解决方法是将层切换到标准层,然后再将其切换回无服务器。我希望这只是为了切换层而杀死所有活动连接的效果,而不是它对我有用的根本原因位。
我建议您尝试使用上面的方法 1 或 2 诊断活动连接并报告回来。
我不确定问题是关于自动暂停还是只是从一开始就收取高额费用。
我有同样的问题,即使什么都没有 运行(看起来,根据 sp_whoisactive)...
关于原因,我发现的一个有用的指针是: https://docs.microsoft.com/en-us/azure/azure-sql/database/serverless-tier-overview#billing 其中
The amount of compute billed is exposed by the following metric:
- Metric: app_cpu_billed (vCore seconds)
- Definition: max (min vCores, vCores used, min memory GB * 1/3, memory GB used * 1/3)
- Reporting frequency: Per minute
This quantity is calculated each second and aggregated over 1 minute.
凶手似乎是“已使用内存 GB”。如果您按比例缩放为 8 个 vCore 和 24GB 最大内存,那么似乎 SQL 服务器会在您执行任何操作后立即获取所有内存并且永远不会让它消失......所以即使您的 CPU 是运行 10% 您拥有所有内存并一直为所有“vCores”付费。
我根本不是 DBA,但我听说这是 SQL 服务器的正常行为,所以要么我错过了一些明显的东西,要么感觉像是在敲诈。
请注意,“应用程序 CPU 收费”指标未以美元报价。它以 vCore 秒为单位引用。
因此,在您的情况下,如果您每分钟大约支付 40 个单位的费用,每计算 0.000145 美元 COST/VCORE/SECOND(我在门户的“计算 + 存储”屏幕上看到的当前费率),那么您每分钟需支付 0.0058 美元,或约 250 美元/月。
不确定您的预算是多少,或者您是否对这个指标有任何困惑,但当我今天早些时候第一次看到我的图表并错误地认为它是以美元报价时,它让我轻微的心脏病发作。
刚意识到有些人仍然会来阅读此答案,答案 is/was,我一直在删除并重新创建数据库,问题自行解决。
所以简短的回答,我不知道是什么修复了它,但现在已经修复了