我成功地基本配置了我的副本集,但我注意到读取性能很慢。我的副本集中有 2 个 mongo 服务器和 1 个仲裁器。所有都在 Centos 6.3 最小设置(只是数据库)上运行。
我在另一个 Windows 服务器 2012 上也有单个 mongo 实例。
在我构建我的副本集之前,我的 Web 服务器与 Mongo(那个 Windows 实例)在同一个操作系统上。性能很好,结果就像
C# .NET 4.5(同一 VM 上的 IIS 和 Mongo)读取 2000 行:AvgObj 2600 字节时约 250 毫秒
现在使用我的副本集,我的读取性能非常慢。当我的网络服务器访问副本集时,我得到的结果如下
C# .NET 4.5(分离,Centos 副本上的 IIS 和 Mongo)读取 2000 行:AvgObj 2600 字节时约 2500 毫秒
我试图从远程 IIS 中读取我的单个 Mongo 瞬间,结果就像
C# .NET 4.5(Windows 上的分离、IIS 和单个 Mongo)读取 2000 行:AvgObj 2600 字节时约 600 毫秒
所有服务器都在具有 Hyper-V 核心服务器的单个物理机中运行。
我使用最新的 C# MongoDB 驱动程序 1.7 版本。从我在命令 shell 中测试的结果来看,在所有 mongo 服务器上,我的查询在 10 毫秒内执行。
谁能给我建议,为什么我在分离的 Centos 服务器上的副本集读取性能很慢?是网络,驱动程序还是其他什么?
我的 C# 配置是
var server1 = new MongoServerAddress("1.0.0.1"); //primary
var server2 = new MongoServerAddress("1.0.0.2"); /secundary
var servers = new List<MongoServerAddress> {server1, server2};
var safe = new MongoClientSettings
{
Servers = servers,
ReplicaSetName = "rs0",
ConnectionMode = ConnectionMode.ReplicaSet,
WriteConcern = new WriteConcern
{
Journal = false,
W = 1
},
ReadPreference = new ReadPreference
{
ReadPreferenceMode = ReadPreferenceMode.PrimaryPreferred
}
};