重要
本文中的信息仅适用于 Azure Cosmos DB .NET SDK v3。 有关详细信息,请查看 Azure Cosmos DB SQL SDK 连接模式 Azure Cosmos DB .NET SDK v3 发行说明、 Nuget 存储库和 Azure Cosmos DB .NET SDK v3 故障排除指南 。 如果当前使用的是低于 v3 的版本,请参阅 “迁移到 Azure Cosmos DB .NET SDK v3 ”指南,获取升级到 v3 的帮助。
Azure Cosmos DB 是一个快速、弹性的分布式数据库,可以在提供延迟与吞吐量保证的情况下无缝缩放。 凭借 Azure Cosmos DB,无需对体系结构进行重大更改或编写复杂的代码即可缩放数据库。 扩展和缩减操作就像执行单个 API 调用或 SDK 方法调用一样简单。 但是,由于 Azure Cosmos DB 是通过网络调用访问的,因此可以使用连接配置进行优化,以在使用 Azure Cosmos DB .NET SDK v3 时实现最佳性能。
连接配置
注释
在 Azure Cosmos DB .NETS SDK v3 中,直接模式 在大多数情况下是提高数据库性能的最佳选择,适用于大多数工作负载。
若要详细了解不同的连接性选项,请参阅连接性模式一文。
直接连接模式
.NET SDK 默认连接模式是直接的。 在直接模式下,使用 TCP 协议发出请求。 内部直接模式使用特殊的体系结构来动态管理网络资源并获得最佳性能。 直接模式下使用的客户端体系结构可实现对 Azure Cosmos DB 副本的可预测网络利用率和多路复用访问。 若要了解有关体系结构的详细信息,请参阅 直接模式连接体系结构。
在 CosmosClient 中创建 CosmosClientOptions 实例时,可以配置连接模式。
CosmosClient client = new CosmosClient(
"<nosql-account-endpoint>",
tokenCredential
new CosmosClientOptions
{
ConnectionMode = ConnectionMode.Gateway // ConnectionMode.Direct is the default
}
);
自定义直接连接模式
可以通过传递 CosmosClientOptions 到 CosmosClient 构造函数来自定义直接模式。 我们建议用户避免修改这些内容,除非他们对理解利弊感到自在,并且有必要。
| 配置选项 | 违约 | Recommended | 详细信息 |
|---|---|---|---|
| 启用 TCP 连接端点重新发现 | 是 | 是 | 这表示允许检测从服务器关闭的连接的标志。 |
| IdleTcpConnectionTimeout | 默认情况下,空闲连接会无限期地保持为打开状态。 | 20分钟-24小时 | 这表示关闭未使用连接后的空闲时间。 建议的值介于 20 分钟到 24 小时之间。 |
| MaxRequestsPerTcpConnection | 30 | 30 | 这表示通过单个 TCP 连接同时允许的请求数。 当有更多请求同时进行处理时,直连/TCP 客户端将打开额外的连接。 不要将此值设置为低于每个连接 4 个请求,或者每个连接的请求数高于 50-100 个请求。 每个连接具有高度并行度的应用程序,具有大型请求或响应,或者具有严格的延迟要求,则每个连接 8-16 个请求的性能可能更好。 |
| MaxTcpConnectionsPerEndpoint(每个端点的最大 TCP 连接数) | 65535 | 65535 | 这表示可以为每个 Cosmos DB 后端打开的最大 TCP 连接数。 此设置与 MaxRequestsPerTcpConnection 一起,限制同时发送到单个 Cosmos DB 后端的请求数(MaxRequestsPerTcpConnection x MaxTcpConnectionPerEndpoint)。 值必须大于或等于 16。 |
| 打开TCP连接超时设置 | 5 秒 | 1 秒 | 这表示尝试建立连接所允许的时间量。 时间流逝后,尝试被取消并返回错误。 更长的超时时间会导致重试和失败的延迟。 |
| PortReuseMode | PortReuseMode.ReuseUnicastPort | PortReuseMode.ReuseUnicastPort | 这表示传输堆栈使用的客户端端口重用策略。 |
注释
另请参阅 直接连接模式的网络性能技巧
自定义网关连接模式
网关模式可以通过传递给CosmosClient构造函数的CosmosClientOptions进行自定义。 我们建议用户避免修改这些内容,除非他们对理解利弊感到自在,并且有必要。
| 配置选项 | 违约 | Recommended | 详细信息 |
|---|---|---|---|
| GatewayModeMaxConnectionLimit | 50 | 50 | 这表示 Azure Cosmos DB 服务中目标服务终结点允许的最大并发连接数。 |
| WebProxy | null | null | 这表示用于 Web 请求的代理信息。 |
后续步骤
若要详细了解 .NET SDK 的性能提示,请参阅 Azure Cosmos DB NET SDK v3 的性能提示。
- 如果你只知道现有数据库群集中的 vCore 和服务器数量,请阅读根据 vCore 或 vCPU 数量估算请求单位数
- 若知道当前数据库工作负载的典型请求速率,请阅读使用 Azure Cosmos DB 容量计划工具估算请求单位