MongoDB ReplicaSet 读取性能缓慢

MongoDB ReplicaSet 读取性能缓慢

我成功基本配置了我的副本集,但我发现读取性能很慢。我的副本集中有 2 个 mongo 服务器和 1 个仲裁器。所有服务器都在 Centos 6.3 最小设置(仅数据库)上运行。

我在 Windows Server 2012 上也有单个 mongo 实例。

在我构建副本集之前,我的 Web 服务器与 Mongo 使用相同的操作系统(即 Windows 实例)。性能很好,结果如下

C# .NET 4.5(同一虚拟机上的 IIS 和 Mongo)读取 2000 行:约 250 毫秒,平均 Obj 为 2600 字节

现在,我的副本集读取性能非常慢。当我的 Web 服务器访问副本集时,我得到的结果如下

C# .NET 4.5(分离,Centos 副本上的 IIS 和 Mongo)读取 2000 行:~2500ms,AvgObj 2600 字节

我尝试从远程 IIS 读取单个 Mongo 实例,结果如下

C# .NET 4.5(Windows 上的分离、IIS 和单个 Mongo)读取 2000 行:约 600 毫秒,平均 Obj 2600 字节

所有服务器均在具有 Hyper-V 核心服务器的单台物理机上运行。

我使用的是最新的 C# MongoDB Driver 1.7 版本。根据我的测试,在所有 Mongo 服务器上,我的查询都在 10ms 内执行。

有人能告诉我为什么我在分离的 Centos 服务器上的副本集读取性能很慢吗?

答案1

如果您尝试直接从副本读取数据而不设置 slaveok=true,则副本将代理从主节点和中继节点读取数据。这可能是大部分延迟的根源。请仔细检查您的偏好模式,确保您设置的模式允许直接从非主节点读取数据。

相关内容