Mongodb 在尝试写入Mongo副本集时,是什么导致超时?
我正在运行一个C#脚本来对分片集群执行写操作。 每当我尝试对数据库执行写操作时,都会出现一个错误,从 使用CompositeServerSelector选择服务器30000ms后发生超时 有人知道我需要做什么才能成功写作吗?此群集是一个3节点复制集,具有一个主副本和两个辅助副本 详情如下: 我正在使用Nuget包:Mongo.Db.Core、Mongodb.Core.Driver和Mongodb.Bson,所有这些包的版本号都是2.11.2。如果在控制台中运行db.version(),它将返回4.2.9 我准备连接字符串,如图所示:Mongodb 在尝试写入Mongo副本集时,是什么导致超时?,mongodb,mongodb-.net-driver,mongo-shell,Mongodb,Mongodb .net Driver,Mongo Shell,我正在运行一个C#脚本来对分片集群执行写操作。 每当我尝试对数据库执行写操作时,都会出现一个错误,从 使用CompositeServerSelector选择服务器30000ms后发生超时 有人知道我需要做什么才能成功写作吗?此群集是一个3节点复制集,具有一个主副本和两个辅助副本 详情如下: 我正在使用Nuget包:Mongo.Db.Core、Mongodb.Core.Driver和Mongodb.Bson,所有这些包的版本号都是2.11.2。如果在控制台中运行db.version(),它将返回4
MongoUrlBuilder bldr = new MongoUrlBuilder();
List<MongoServerAddress> servers = new List<MongoServerAddress>();
servers.Add(new MongoServerAddress("the-domain0.azure.mongodb.net", 27017));
servers.Add(new MongoServerAddress("the-domain1.azure.mongodb.net", 27017));
servers.Add(new MongoServerAddress("the-domain2.azure.mongodb.net", 27017));
bldr.Username = "the_user";
bldr.Password = "the_password";
bldr.Servers = servers;
bldr.DatabaseName = "the_db_name";
bldr.ConnectionMode = ConnectionMode.ReplicaSet;
_mongoConnectionString = bldr.ToMongoUrl().ToString();
var client = new MongoClient(_mongoConnectionString);
IMongoDatabase database = client.GetDatabase("the_db_name");
_the_collection_name = database.GetCollection<CollType>(_collname);
以下是错误的主要方面:
MongoUrlBuilder bldr = new MongoUrlBuilder();
List<MongoServerAddress> servers = new List<MongoServerAddress>();
servers.Add(new MongoServerAddress("the-domain0.azure.mongodb.net", 27017));
servers.Add(new MongoServerAddress("the-domain1.azure.mongodb.net", 27017));
servers.Add(new MongoServerAddress("the-domain2.azure.mongodb.net", 27017));
bldr.Username = "the_user";
bldr.Password = "the_password";
bldr.Servers = servers;
bldr.DatabaseName = "the_db_name";
bldr.ConnectionMode = ConnectionMode.ReplicaSet;
_mongoConnectionString = bldr.ToMongoUrl().ToString();
var client = new MongoClient(_mongoConnectionString);
IMongoDatabase database = client.GetDatabase("the_db_name");
_the_collection_name = database.GetCollection<CollType>(_collname);
System.TimeoutException:“30000ms选择后发生超时
使用CompositeServerSelector{Selectors的服务器=
MongoDB.Driver.MongoClient+是会话支持的服务器选择器,
LatencyLimitingServerSelector{AllowedLatencyRange=00:00:00.0150000
} }. 群集状态的客户端视图为{ClusterId:“1”,ConnectionMode
:“ReplicaSet”,类型:“ReplicaSet”,状态:“Disconnected”,服务器:
[{ServerId:{ClusterId:1,端点:
“未指定/the_domain.azure.mongodb.net:27017”
}“,端点:
“未指定/the_domain.azure.mongodb.net:27017”,
原因更改:“心跳”,状态:“已断开”,服务器版本:,
拓扑版本:,类型:“未知”,异常:
“MongoDB.Driver.MongoConnectionException:运行时发生异常
正在打开与服务器的连接
这是完整的堆栈跟踪:
MongoUrlBuilder bldr = new MongoUrlBuilder();
List<MongoServerAddress> servers = new List<MongoServerAddress>();
servers.Add(new MongoServerAddress("the-domain0.azure.mongodb.net", 27017));
servers.Add(new MongoServerAddress("the-domain1.azure.mongodb.net", 27017));
servers.Add(new MongoServerAddress("the-domain2.azure.mongodb.net", 27017));
bldr.Username = "the_user";
bldr.Password = "the_password";
bldr.Servers = servers;
bldr.DatabaseName = "the_db_name";
bldr.ConnectionMode = ConnectionMode.ReplicaSet;
_mongoConnectionString = bldr.ToMongoUrl().ToString();
var client = new MongoClient(_mongoConnectionString);
IMongoDatabase database = client.GetDatabase("the_db_name");
_the_collection_name = database.GetCollection<CollType>(_collname);
System.TimeoutException:“30000ms选择后发生超时
使用CompositeServerSelector{Selectors的服务器=
MongoDB.Driver.MongoClient+是会话支持的服务器选择器,
LatencyLimitingServerSelector{AllowedLatencyRange=00:00:00.0150000
}}.群集状态的客户端视图是{ClusterId:“1”,ConnectionMode
:“ReplicaSet”,类型:“ReplicaSet”,状态:“Disconnected”,服务器:
[{ServerId:{ClusterId:1,端点:
“未指定/the-domain0.azure.mongodb.net:27017”
}“,端点:
“未指定/the-domain0.azure.mongodb.net:27017”,
原因更改:“心跳”,状态:“已断开”,服务器版本:,
拓扑版本:,类型:“未知”,异常:
“MongoDB.Driver.MongoConnectionException:运行时发生异常
正在打开与服务器的连接。-->
MongoDB.Driver.MongoConnectionException:运行时发生异常
正在从服务器接收消息。-->
System.IO.EndOfStreamException:试图读取超过
溪流,在
MongoDB.Driver.Core.Misc.StreamExtensionMethods.ReadByteAsync(流
流,字节[]缓冲区,Int32偏移量,Int32计数,TimeSpan超时,
取消令牌(取消令牌)位于
MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync(CancellationToken
cancellationToken)---内部异常堆栈跟踪的结束----at
MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveMessageAsync(Int32
响应,IMessageEncoderSelector编码器选择器,
MessageEncoderSettings MessageEncoderSettings,CancellationToken
取消令牌)在
MongoDB.Driver.Core.WireProtocol.CommandUsingQueryMessageWireProtocol1.ExecuteAsync(IConnection connection,CancellationToken CancellationToken)位于MongoDB.Driver.Core.Connections.IsMasterHelper.GetResultAsync(IConnection connection,CommandWireProtocol
1 isMasterProtocol,CancellationToken
取消令牌)在
MongoDB.Driver.Core.Connections.ConnectionInitializer.InitializeConnectionAsync(IConnection
连接,取消令牌(取消令牌)位于
MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken
cancellationToken)---内部异常堆栈跟踪的结束----at
MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken
取消令牌)在
MongoDB.Driver.Core.Servers.ServerMonitor.InitializeConnectionAsync(CancellationToken
取消令牌)在
MongoDB.Driver.Core.Servers.ServerMonitor.HeartbeatAsync(CancellationToken
cancellationToken)”,最后一个时间戳:
“2020-09-11T18:25:25.7998117Z”,最新更新:
“2020-09-11T18:25:25.7998118Z”},{ServerId:{ClusterId:1,
终点:
“未指定/the-domain1.azure.mongodb.net:27017”
}“,端点:
“未指定/the-domain1.azure.mongodb.net:27017”,
原因更改:“心跳”,状态:“已断开”,服务器版本:,
拓扑版本:,类型:“未知”,异常:
“MongoDB.Driver.MongoConnectionException:运行时发生异常
正在打开与服务器的连接。-->
MongoDB.Driver.MongoConnectionException:运行时发生异常
正在从服务器接收消息。-->
System.IO.EndOfStreamException:试图读取超过
溪流,在
MongoDB.Driver.Core.Misc.StreamExtensionMethods.ReadByteAsync(流
流,字节[]缓冲区,Int32偏移量,Int32计数,TimeSpan超时,
取消令牌(取消令牌)位于
MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBufferAsync(CancellationToken
cancellationToken)---内部异常堆栈跟踪的结束----at
MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveMessageAsync(Int32
响应,IMessageEncoderSelector编码器选择器,
MessageEncoderSettings MessageEncoderSettings,CancellationToken
取消令牌)在
MongoDB.Driver.Core.WireProtocol.CommandUsingQueryMessageWireProtocol1.ExecuteAsync(IConnection connection,CancellationToken CancellationToken)位于MongoDB.Driver.Core.Connections.IsMasterHelper.GetResultAsync(IConnection connection,CommandWireProtocol
1 isMasterProtocol,CancellationToken
取消令牌)在
MongoDB.Driver.Core.Connections.ConnectionInitializer.InitializeConnectionAsync(IConnection
连接,取消令牌(取消令牌)位于
MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken
取消令牌)--结束