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

关于Cosmos DB自动扩缩容RU及获取容器物理分区数的技术咨询

针对你遇到的Cosmos DB限流和自动扩缩容问题,我分享下可行的解决办法:

获取Azure Cosmos DB容器的物理分区数量

你可以通过以下几种方式快速获取物理分区数:

1. Azure 门户可视化查看

  • 登录Azure门户,定位到你的Cosmos DB账户
  • 进入目标容器所属的数据库,选中对应容器
  • 打开数据资源管理器,点击容器名称旁的「...」,选择查看分区键统计
  • 在弹出的面板中,就能直接看到「物理分区计数」的具体数值

2. Azure CLI 命令查询

执行以下命令(替换占位符为你的资源信息):

az cosmosdb sql container show --resource-group <你的资源组名称> --account-name <你的Cosmos DB账户名> --database-name <数据库名> --name <容器名> --query 'physicalPartitionCount' --output tsv

3. PowerShell 命令查询

Get-AzCosmosDBSqlContainer -ResourceGroupName <资源组名> -AccountName <Cosmos DB账户名> -DatabaseName <数据库名> -Name <容器名> | Select-Object PhysicalPartitionCount

4. 通过 SDK 编程获取(以 .NET 为例)

using Azure.Cosmos;

var cosmosClient = new CosmosClient("<你的Cosmos DB连接字符串>");
var targetContainer = cosmosClient.GetContainer("<数据库名称>", "<容器名称>");
var containerProps = await targetContainer.ReadContainerAsync();
int physicalPartitionCount = containerProps.Resource.PhysicalPartitionCount;
Console.WriteLine($"当前物理分区数量: {physicalPartitionCount}");

Azure Cosmos DB 自动扩缩容解决方案

方案1:使用官方原生自动缩放(推荐)

Azure Cosmos DB自带自动缩放吞吐量功能,能根据容器的实时负载自动调整RU/s,完全无需手动干预:

  • 登录Azure门户,进入目标容器的设置页面
  • 切换到吞吐量选项卡,选择「自动缩放」模式
  • 设置最小和最大RU/s阈值(比如最小1000 RU/s,最大10000 RU/s)
  • 保存后,系统会基于CPU使用率、请求单位消耗、存储使用率等核心指标自动调整RU,轻松应对突发高流量

方案2:自定义基于指标的扩缩容(复杂场景适配)

如果需要更精细化的控制(比如基于429错误率、特定请求延迟触发扩缩),可以通过Azure Monitor + 自动化账户实现:

  1. 创建Azure Monitor警报规则:
    • 针对Cosmos DB容器的目标指标(如429 Errors、Request Rate、Total Requests)设置阈值
    • 当指标超出阈值时,触发警报并关联自动化账户的Runbook
  2. 编写PowerShell Runbook脚本:
    param(
        [Parameter(Mandatory=$true)]
        [string]$ResourceGroupName,
        [Parameter(Mandatory=$true)]
        [string]$AccountName,
        [Parameter(Mandatory=$true)]
        [string]$DatabaseName,
        [Parameter(Mandatory=$true)]
        [string]$ContainerName,
        [int]$TargetRU
    )
    
    $container = Get-AzCosmosDBSqlContainer -ResourceGroupName $ResourceGroupName -AccountName $AccountName -DatabaseName $DatabaseName -Name $ContainerName
    $container.Throughput = $TargetRU
    Update-AzCosmosDBSqlContainer -InputObject $container
    
  3. 配置警报动作组:将警报的触发动作关联到上述Runbook,传递必要参数(如目标RU值)

你也可以用Azure Functions替代自动化账户,通过Monitor的Webhook触发函数来调整RU,灵活性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:06:46