你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Cosmos DB for Apache Cassandra 的服务器诊断

适用于: Cassandra

Log Analytics 是 Azure 门户中的一种工具,可帮助你在适用于 Cassandra 的 API 帐户上运行服务器诊断。 从 Azure Monitor 日志收集的数据运行日志查询,以交互方式分析其结果。 从 Log Analytics 查询检索的记录有助于提供对数据的各种见解。

先决条件

使用 Log Analytics

完成 Log Analytics 设置后,可以开始浏览日志以获得更多见解。

审核数据平面操作

使用 CDBCassandraRequests 表查看专用于你的适用于 Cassandra 的 API 帐户的数据平面操作。 一个示例查询,用于查看 topN (10 个) 使用请求,并获取有关每个请求的详细信息。

CDBCassandraRequests
| where RequestCharge  > 0
| project DatabaseName, CollectionName, DurationMs, OperationName, ActivityId, ErrorCode, RequestCharge, PIICommandText 
| order by RequestCharge
| take 10

错误代码和可能的解决方案

状态代码 错误代码 说明
200 -1 成功
400 8704 查询正确,但语法无效。
400 8192 提交的查询有语法错误。 检查查询。
400 8960 由于某些配置问题,查询无效。
401 8448 登录的用户没有执行查询的正确权限。
403 8448 禁止响应,因为用户可能没有执行请求所需的权限。
404 5376 由于找不到响应,写入请求期间出现非超时异常。
405 0 服务器端 Cassandra 错误。 错误很少发生,请打开支持票证。
408 4608 读取请求期间超时。
408 4352 写入 serviceRequest 期间出现超时异常。
409 9216 尝试创建已存在的键空间或表。
412 5376 不满足前提条件。 为了确保数据完整性,我们确保基于读取响应的写入请求为 true。 已返回非超时写入请求异常。
413 5376 写入请求期间出现此非超时异常的原因是有效负载可能太大。 目前,每行限制为 2MB。
417 9472 当准备的语句未缓存在服务器节点上时,将引发异常。 它应该是暂时性的/非阻塞的。
423 5376 由于当前正在处理写入请求,因此存在锁定。
429 4097 重载异常是 RU 不足或请求速率过高的结果。 可能需要更多的 RU 来处理较高的卷请求。 在本机 Cassandra 中,这可以解释为其中一个没有足够 CPU 的VM。 建议查看当前数据模型,以确保没有可能导致热分区的过度倾斜。
449 5376 并发执行异常。 出现这种情况是为了确保一次只对给定行执行一次写入更新。
500 0 服务器 cassandraError:发生了意外情况。 这表示服务器端 bug。
503 4096 服务不可用。
256 这可能是由于连接凭据无效。 请检查连接凭据。
10 客户端消息触发了协议冲突。 例如,在发送启动消息之前发送的查询消息。

排查查询消耗问题

CDBPartitionKeyRUConsumption 表包含有关每个物理分区内每个区域中逻辑键的请求单位 (RU) 消耗的详细信息。

CDBPartitionKeyRUConsumption 
| summarize sum(todouble(RequestCharge)) by PartitionKey, PartitionKeyRangeId
| render columnchart

探索控制平面操作

CBDControlPlaneRequests 表包含有关控制平面操作的详细信息,特别是针对适用于 Cassandra 的 API 帐户。

CDBControlPlaneRequests
| where TimeGenerated > now(-6h)
| where  ApiKind == "Cassandra"
| where OperationName in ("Create", "Upsert", "Delete", "Execute")
| summarize by OperationName

后续步骤