当前位置: 首页 > 知识库问答 >
问题:

节点。Ubuntu上的js MongoDB:列表中没有有效的种子服务器

扶誉
2023-03-14

我正在尝试使用以下命令从Ubuntu连接到副本集:

return when.promise(function(resolve,reject){
        new MongoClient().connect(url, {replSet: options }, function(err, db){
        console.dir(err)
        if (err)
            reject(err);

        resolve(db);
    });
});

Url如下所示:

'mongodb://mongo1.mysite.com:36108,mongo2。我的网站。com:36108,mongo3。我的网站。com:36108/db_配置?w=0'

我正在连接多个数据库,偶尔会看到以下错误:

{name:'MongoError',消息:“列表中没有有效的种子服务器”}

和节点。js崩溃了。

我现在有点迷路了。主要的问题是它在MAC上运行得很好,我只在Ubuntu上看到这个问题。我正在使用node的最新mongo驱动程序。js

更新

我查看了本机驱动程序源代码:

http://mongodb.github.io/node-mongodb-native/core/api/replset.js.html

发现错误是由这个条件触发的(第987行):state.initialConnectionServers==0

仍然不确定为什么会发生这种情况。


共有3个答案

宗政安歌
2023-03-14

请遵循rinchnik和Gabe rainbow给出的解决方案。如果问题仍然存在,请将模块“mongodb”更新为2.2.27版,“mongoose”更新为4.9.1版。

景麒
2023-03-14

增加文件描述符的数量解决了这个问题。

在Ubuntu 12.04.5上,LTS的默认值是1024,这还不够。

潘哲
2023-03-14

不同的是,你没有一个副本集在你自己的单一mac(osx?)上笔记本电脑/台式机。它在独立模式下运行。但在这3台服务器上确实有或打算有一个副本集。

以下是所提供字符串的一些潜在问题。

1) 27017是mongo的默认端口,除非它被特别更改为36108,否则这是不正确的。

mongodb://mongo1.mysite.com:36108,mongo2.mysite.com:36108,mongo3.mysite.com:36108/db_config?w=0

尝试

mongodb://mongo1.mysite.com:27017,mongo2.mysite.com:27017,mongo3.mysite.com:27017/db_config?w=0

2)w=0对我来说很陌生,也许它是您的副本集的名称。通常副本集的连接字符串如下,其中rs0是副本集的名称。

mongodb://mongo1.mysite.com:27017,mongo2.mysite.com:27017,mongo3.mysite.com:27017/replicaSet=rs0

3) 您可能没有配置副本集。检查rs.config

登录服务器mongo1。我的网站。通用域名格式

使用mongo admin-u clusteradmin-p whateverpassword进入mongo shell

类型

rs.config()

如果您没有看到以下内容,则您没有要连接的副本集。这里rs0是副本集的名称。你的名字可能叫w???

{
    "_id" : "rs0",
    "version" : 4,
    "members" : [
        {
            "_id" : 0,
            "host" : "mongo1.mysite.com:36108"
        },
        {
            "_id" : 1,
            "host" : "mongo2.mysite.com:36108"
        },
        {
            "_id" : 2,
            "host" : "mongo3.mysite.com:36108",
        }
    ]
}

rs.add(“mongo1.mysite.com:36108”)//或带有“mongo1.mysite.com:27017”的默认端口rs.add(“mongo2.mysite.com:36108”)rs.add(“mongo3.mysite.com:36108”)

但比任何事情都好的是刷起o个副本集,包括此文档,以将独立副本集转换为副本集

给定的 /db_config字符串看起来像一个rs.config()等效的命令,但通过超文本传输协议完成,并期望将服务器列表添加到副本集。但是坦率地说,你不能连接到副本集来配置它?所以这看起来很奇怪。你可以连接到主服务器,所以试试

mongodb://mongo1.mysite.com:36108/db_config?w=mongo1.mysite.com:36108,mongo2.mysite.com:36108,mongo3.mysite.com:36108
 类似资料:
  • nvm版本- nodejs-v显示的是v0.10.25,它在/usr/bin中非常旧,但没有安装“node”。 需要安装节点4。作为node的新手,任何帮助都将不胜感激。

  • 在Spring MVC REST服务(json)中,我有一个控制器方法,如下所示: 其中MyBean类具有bean验证注释。 在这种情况下,验证似乎没有发生,尽管它对其他控制器很有效。 我不想将列表封装在dto中,这样会改变json输入。 为什么没有对bean列表的验证?有哪些替代方案?

  • 我正在尝试使用mongodb连接mongodb。MongoClient。带有简单url连接字符串集的connect()。当我启动服务器时,它会抛出错误 这是我的代码,我要通过三个mongodb服务器,如下所示 mongoDB版本=2.2.3 mongdb lib版本=1.3.18 但我不知道会有什么问题。这个问题也发生在我的生产设置中。

  • 问题内容: 我当时正在编写一个简短的脚本来更改元素的内部文本,但是发现它没有方法。我知道那不是继承自,但似乎不是一种有用的方法吗?是否有一个具体的实施问题,我不知道阻止添加的到? 注意:我知道Dojo和jQuery 的节点列表都有某种形式。由于限制,我无法使用任何一个。 问题答案: 现在,NodeList在所有主要浏览器中都具有forEach() 原始答案 这些答案都不能解释 为什么 NodeLi

  • 我正在努力学习RCP中的TreeViewer。我为此写了一小段代码。 我的代码哪里有问题? 谢了!

  • 我有游戏对象的n-ary树。用户随机选择树中的一些对象并想要删除。问题在于,有些对象是另一个对象的子对象。事实证明,每次删除层次结构中的节点后,我必须遍历所有选定的节点并将其删除。算法是否比 O (n^2) 快? upd:为了更清楚我需要什么,我写了伪代码: