cosmos DB如何计算请求费用

时间:2020-08-27 17:02:10

标签: azure-cosmosdb azure-cosmosdb-mongoapi

cosmos DB如何计算请求费用(即每种操作类型的总请求费用,以每秒请求单位(RU / s)为单位)。

我运行了一个脚本,该脚本每秒对一个示例JSON进行增补,并发现了怪异的指标,其中我的请求费用超过1.5K

当我在COSMOS DB的MONGO SHELL上运行相同的查询时,它向我返回了 2.31 RUs

的RU

db.cdrs.update({record_key:“ 2088918ecc406535693a48a4f57viren”},{“ call_date”:“ 2020-03-20T23:00:00Z”,“ record_key”:“ 2088918ecc406535693a48a4f57viren”,“ cdr_filename”:“ NVX00322_alliance。 .zip“,” record_number“:1,” source“:” Cdr_Alliance10“,” callid“:” 2296J25CQ“,” switch“:” 10.0.1.11:4000","start_time_utc":"2020-03-20T23:15 :13Z“,” end_time_utc“:” 2020-03-20T23:15:19Z“,” call_duration_seconds“:6,” release_code“:” 200“,” from_number“:” 3205586312“,” to_number“:” 8774400565“, “ bill_to_number”:“ 2221738323”,“ raw_cdr”:{“ authCode”:“”,“ calling_card_no”:“”,“ chargeNumber”:“ 2221738323”,“ cost”:“ 0000000013”,“ countryIndex”:“ 0” ,“ dialAround”:“ 0”,“ duration”:“ 000001”,“ infoDigits”:“ 00”,“ messageId”:“ 2296J25CQ”,“ origCity”:“ WEATHER”,“ origLata”:“ 626”,“ origNo“:” 3205586312“,” origNumber“:” 3205586312“,” origOcn“:” 1123“,” origState“:” MN“,” payComp“:” 0“,” service“:” 8“,” startDate“ :“ 032020”,“ startTime”:“ 231513”,“ termCity”:“ D TOLLFREE”,“ termLata”:“ 000”,“ termNumber”:“ 8774400565”,“ termOcn”:“ 00 00“,” termState“:” NJ“,” term_no“:” 2221738323“,” term_type“:” 0“}},{upsert:true})

Operation consumed 2.31 RUs

如果我了解Cosmos(在COSMOS中也提到),并且一次又一次地执行相同的操作,则不会收取不同的费用。

那么

2.31 * 60 = 120 RU 

120 RU /分钟仍然不能解释COSMOS DB Metric显示的1.5K +请求费用(如下图所示)。

enter image description here

cat NVX00322_alliance.cdr-1.json | wc -l
    1

在这里插入到cosmos DB的结果代码在这里

func main() { 
   handler, err := os.OpenFile("NVX00322_alliance.cdr-1.json", os.O_RDONLY, os.ModePerm)
    if err != nil {
        panic(err)
    }

    var data map[string]interface{}
    if err := json.NewDecoder(handler).Decode(&data); err != nil {
        panic(err)
    }
    
    ticker := time.NewTicker(1 * time.Second)

    for {
        select {
        case <-ticker.C:
            if err := mongoUpload(data); err != nil {
                fmt.Println(err)
            }
        }
    }
}

func mongoUpload(data map[string]interface{}) error {
    fmt.Printf("\r %d", uploadCount)
    uploadCount++
    _, err := collection.Upsert(bson.M{"record_key": data["record_key"]}, data)
    if err != nil {
        if (err == io.EOF) || (strings.Contains(err.Error(), "read: connection reset by peer")) {
            mongoSetup()
        }
        return err
    }
    return nil
}

为收集分配的RU为MAX RU / s 21000,并且吞吐量设置为“自动缩放”。

分区键为call_date,但在检查集合(此特定集合)时,给定集合和DB中的文档总数不超过20个。

0 个答案:

没有答案