处理DocumentDB中的每秒请求单位(RUs / s)峰值

时间:2016-04-19 09:41:53

标签: azure azure-cosmosdb request-unit

DocumentDB最困难的事情之一是确定每天运行应用程序所需的每秒请求单位数(RUs / s),以及使用高峰期间。当你弄错了,DocumentDB客户端将抛出异常,这是一种糟糕的使用模式。

如果我的应用程序当天有特定时间使用更高数量的每秒请求单元数(RUs / s),那么我该如何在DocumentDB中处理此问题?我不想整天设置一个非常高的RU / s因为我会得到相应的收费。我也不想每次都登录Azure门户。

1 个答案:

答案 0 :(得分:6)

您可以在Azure上创建一个作业,仅在您需要的时间扩展收集的吞吐量,然后再缩小。

如果您从.NET瞄准DocumentDB,this Azure article的示例代码显示了如何使用.NET SDK更改吞吐量。

article中引用的特定(C#.NET)代码如下所示:

//Fetch the resource to be updated
Offer offer = client.CreateOfferQuery()
              .Where(r => r.ResourceLink == collection.SelfLink)    
              .AsEnumerable()
              .SingleOrDefault();

// Set the throughput to 5000 request units per second
offer = new OfferV2(offer, 5000);

//Now persist these changes to the database by replacing the original resource
await client.ReplaceOfferAsync(offer);

// Set the throughput to S2
offer = new Offer(offer);
offer.OfferType = "S2";

//Now persist these changes to the database by replacing the original resource
await client.ReplaceOfferAsync(offer);

我认为其他语言的DocumentDB SDK具有相同的功能。

此外,从Azure article found here您可以使用PowerShell更改服务级别。

$ResourceGroupName = "resourceGroupName"

$ServerName = "serverName"
$DatabaseName = "databaseName"

$NewEdition = "Standard"
$NewPricingTier = "S2"

$ScaleRequest = Set-AzureRmSqlDatabase -DatabaseName $DatabaseName -   ServerName $ServerName -ResourceGroupName $ResourceGroupName -Edition     $NewEdition -RequestedServiceObjectiveName $NewPricingTier