我尝试在Mongolabs中部署我的Mongo数据库,一切正常,我创建了一个新的数据库.请看我的连接字符串.
public DbHelper()
{
MongoClientSettings settings = new MongoClientSettings()
{
Credentials = new MongoCredential[] { MongoCredential.CreateCredential("dbname", "username", "password") },
Server = new MongoServerAddress("ds011111.mongolab.com", 11111),
//ConnectTimeout = new TimeSpan(30000)
};
Server = new MongoClient(settings).GetServer();
DataBase = Server.GetDatabase(DatabaseName);
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试连接数据库时,它显示的错误如下:

我们最近将我们的Web应用程序升级到MongoDB C#Driver 2.0并部署到生产中.低于一定负载,应用程序运行正常.一旦生产服务器上的负载超过某个限制,应用程序的CPU立即降至0,大约30秒后,将多次记录此异常:
System.TimeoutException message: A timeout occured after 30000ms selecting a server using CompositeServerSelector{ Selectors = ReadPreferenceServerSelector{ ReadPreference = { Mode = Primary, TagSets = System.Collections.Generic.List`1[MongoDB.Driver.TagSet] } }, LatencyLimitingServerSelector{ AllowedLatencyRange = 00:00:00.0150000 } }. Client view of cluster state is { ClusterId : "1", Type : "Standalone", State : "Disconnected", Servers : [{ ServerId: "{ ClusterId : 1, EndPoint : "Unspecified/10.4.0.113:27017" }", EndPoint: "Unspecified/10.4.0.113:27017", State: "Disconnected", Type: "Unknown" }] }.
stack trace:
at MongoDB.Driver.Core.Clusters.Cluster.ThrowTimeoutException(IServerSelector selector, ClusterDescription description)
at MongoDB.Driver.Core.Clusters.Cluster.<WaitForDescriptionChangedAsync>d__18.MoveNext() …Run Code Online (Sandbox Code Playgroud) 我有以下应用程序:
A - 应用程序 A 是托管在 IIS 7.5 中的 .net wcf 服务,使用在 .net 4.5 中编译的 c# mongodriver 2.2.4
B - 应用程序 B 是使用 mongodriver 1.11 在 .net 3.5 中编译的 Windows 服务应用程序
这两种服务是相似的,服务 B 是为遗留系统维护的,服务 A 正在演变。
这两个应用程序都托管在相同的服务器中。(Windows Standard 2008 R2) 这个应用程序已经完美运行了 1 年多,但自 2016 年 6 月 24 日起,应用程序 A (WCF) 在打开与 Mongo Server 的新连接时开始出现奇怪的行为:
Run Code Online (Sandbox Code Playgroud)> System.TimeoutException: A timeout occured after 30000ms selecting a > server using CompositeServerSelector{ Selectors = > ReadPreferenceServerSelector{ ReadPreference = { Mode = Primary, > …