Azure cosmosdb 灵巧的管理

Azure cosmosdb 灵巧的管理,azure-cosmosdb,gremlin,Azure Cosmosdb,Gremlin,在C#中管理GremlinClient对象的最佳实践是什么?在每次调用后创建一个SingleInstance(通过依赖项注入)或在对象上使用Dispose还是使用using using (var client = new GremlinClient(...)) { var results = client.SubmitAsync(query); } 由于它是与服务器的套接字连接,我认为重用客户机是最佳实践,但我一直遇到这个错误,我无法确定根本原因 Unable to read data f

在C#中管理GremlinClient对象的最佳实践是什么?在每次调用后创建一个SingleInstance(通过依赖项注入)或在对象上使用Dispose还是使用using

using (var client = new GremlinClient(...))
{
  var results = client.SubmitAsync(query);
}
由于它是与服务器的套接字连接,我认为重用客户机是最佳实践,但我一直遇到这个错误,我无法确定根本原因

Unable to read data from the transport connection: 
An existing connection was forcibly closed by the remote host.

建议只使用一个
GremlinClient
对象,并在整个应用程序中重用该对象,因为客户端使用连接池,因此相同的连接可以再次用于不同的请求,而不必为每个请求创建和断开一个连接。从3.4.0版开始,驱动程序还支持请求管道,这意味着相同的连接可以并行用于不同的请求,从而减少所需的连接数。当然,这也只有在重用客户端时才能起作用

然而,您描述的问题可能是由Gremlin.Net驱动程序中的错误引起的。如果您使用的是Gremlin.Net的3.4.0版本,那么可能会导致创建大量连接。在这种情况下,您可以通过降级到3.3.5来避免它,直到我们发布版本3.4.1的修复程序。如果您也在版本3.3.5中看到问题,请在中创建一个问题来描述问题


当然,服务器关闭连接还有另一个原因。需要进行更深入的调查以了解原因,例如,使用Wireshark等工具检查驱动程序和Cosmos DB之间的网络流量。

您使用的是哪个版本的Gremlin.Net?是3.4.0吗?谢谢你的回复,你解决了我在创建大量连接时遇到的问题。当记录到监控GremlinClient.NrConnections时,它保持稳定在4(使用默认ConnectionPoolSettings时),但随后将是2158或14201(一些随机的大数字),并且将保持相同的数字。目前我已经制定了一些变通办法,并且也将回到3.3.5。再次感谢。3.4.1版的任何ETA,我已经对ResultSet类型和StatusAttributes进行了相当多的依赖,以监视和测量Cosmos DB RUs。我是否可以克隆一个分支来测试3.4.1?我们的目标是在3月中旬发布3.4.1。该版本将不断发布。如果您想在之前试用它,那么您只需构建将发布3.4.1的版本。当然,对于反馈是否能解决您的问题或您是否遇到任何其他问题,我们将不胜感激。