在Centos 6下Mongo读取速度慢

Nov*_*ato 6 networking mongodb

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

我在另一台Windows服务器2012上也有单个mongo实例.

在构建我的副本集之前,我的Web服务器与Mongo(即Windows实例)在同一个操作系统上.表现很好,结果很像

C#.NET 4.5(同一VM上的IIS和Mongo)读取2000行:AvgObj 2600字节~250ms

现在使用我的副本集,我的读取性能非常慢.当我的Web服务器访问副本集时,我得到的结果就像

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

我尝试从远程IIS中读取我的单个Mongo瞬间,结果就像

C#.NET 4.5(在Windows上分离,IIS和单Mongo)读取2000行:在AvgObj 2600字节〜600ms

所有服务器都在使用Hyper-V核心服务器的单个物理机器上运行.

我使用最新的C#MongoDB驱动程序1.7版本.从我在命令shell中测试的,在所有mongo服务器上,我的查询在10ms内执行.

任何人都可以给我建议为什么我的副本设置在分离的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
                        }
                };
Run Code Online (Sandbox Code Playgroud)

chu*_*e x 3

为了在 Hyper V 上获得最佳性能,请确保使用常规网络适配器(非旧版),并在来宾操作系统内安装集成服务。

对于 CentOS 6.x,您可以从此处安装集成服务: http://www.microsoft.com/en-us/download/details.aspx ?id=34603

如果您发现您的虚拟机使用的是旧版网络适配器,请注意,当您添加新适配器时,您必须重新配置来宾 (CentOS) 操作系统内部的网络。