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

如何查找CosmosDB(MongoDB API)中资源消耗最高的查询?

CosmosDB MongoDB API 排查高RU负载尖峰的替代方案

针对你遇到的事后排查负载尖峰需求,虽然没有完全对应SQL Server sys.dm_exec_query_stats的MongoDB查询,但可以通过以下几种方案定位高RU消耗的操作:

1. 利用 CosmosDB 内置查询存储

CosmosDB 提供了查询存储功能,可直接追踪历史查询的RU消耗数据:

  • 操作路径:Azure门户 → 你的CosmosDB资源 → 数据资源管理器 → 目标集合 → 「查询存储」标签
  • 这里会展示按总RU消耗、平均RU、执行次数排序的历史查询,包含查询文本、耗时等信息,能直接定位触发尖峰的高消耗查询。

2. 启用慢查询日志并分析

通过配置慢查询日志,将高RU/长耗时的操作记录下来,事后可通过诊断日志分析:

启用慢查询

在Azure门户的CosmosDB资源「连接字符串」中,给MongoDB连接字符串添加参数:

&slowms=100&logSlowQueries=true

(slowms=100表示记录执行时间超过100ms的查询,可根据实际调整)

分析慢查询日志

在Azure门户「诊断设置」中,将MongoRequests日志导出到Log Analytics,用Kusto查询筛选尖峰时段的高RU操作:

AzureDiagnostics
| where ResourceType == "COSMOSDB" and Category == "MongoRequests"
| where TimeGenerated between (datetime(尖峰开始时间) and datetime(尖峰结束时间))
| sort by RequestCharge desc
| top 10 by RequestCharge
| project TimeGenerated, RequestCharge, DurationMs, CommandText, DatabaseName

3. 查看集合操作统计

运行MongoDB兼容命令,获取集合的累积操作统计,辅助推断尖峰时段的负载来源:

db.runCommand({
  collStats: "你的集合名称",
  verbose: true
})

返回结果中的stats和wiredTiger字段包含读写次数、平均响应时间等数据,结合时间范围可定位高频或高消耗操作类型。

4. Azure Monitor 事后分析

通过Azure Monitor的日志查询,筛选尖峰时段的请求数据:

AzureDiagnostics
| where ResourceType == "COSMOSDB" and Category == "MongoRequests"
| where RequestCharge > 100  // 筛选RU消耗超过阈值的请求
| sort by RequestCharge desc
| project TimeGenerated, RequestCharge, OperationName, CommandText

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:45:34