Mongo无法在第一次连接

时间:2017-03-22 08:32:37

标签: mongodb mongojs

我知道这是一个讨论问题的方式,并且几乎每个我在SO和google上发现的主题都经历过,但仍然没有解决方案!

问题

在随机时间点,发生以下错误

MongoError: failed to connect to server [127.0.0.1:20000] on first connect
    at Pool.<anonymous> (/home/user/node_modules/mongodb-core/lib/topologies/server.js:326:35)
    at emitOne (events.js:96:13)
    at Pool.emit (events.js:189:7)
    at Connection.<anonymous> (/home/user/node_modules/mongodb-core/lib/connection/pool.js:270:12)
    at Object.onceWrapper (events.js:291:19)
    at emitTwo (events.js:106:13)
    at Connection.emit (events.js:192:7)
    at Socket.<anonymous> (/home/user/node_modules/mongodb-core/lib/connection/connection.js:185:10)
    at Object.onceWrapper (events.js:291:19)
    at emitNone (events.js:86:13)

解决方案

终止应用程序,重新启动mongod服务(删除.lock文件)并重新启动应用程序。现在一切顺利。显然,这不是一个公认的解决方案!

环境和事实

应用程序使用:

编写
  • ExpressJS框架(版本4.15.2)
  • MongoJS驱动程序(版本2.4.0)
  • NodeJS(版本7.7.3)
  • MongoDB(版本3.4.2)

服务器是运行Centos 7的VPS(OpenVZ)。

使用推荐的.rpm方法安装MongoDB,完全按照文档中的描述进行安装。

即使应用程序因上述错误而崩溃,我也可以通过shell连接并发出查询。

日志中没有关于该错误或可能导致错误的内容。唯一的启动警告是关于使用xfs而不是ext4以及将MongoDB与OpenVZ一起使用。

对mongod.conf进行的唯一配置更改是侦听端口并启用授权。

与mongojs一起使用的连接字符串如下

var mongojs = require('mongojs');
var db = mongojs('mongodb://username:password@127.0.0.1:20000/database')

寻求帮助的时刻

请大家!帮助我...这真的很烦人,无法确定是不是我,驱动程序或设置搞砸了!

提前致谢

更新

删除了数据库的打包版本并执行了手动安装,但仍然没有结果!错误仍然存​​在......

1 个答案:

答案 0 :(得分:0)

这就解决了我们的问题。

更改了服务器并从OpenVZ移出到基于KVM的“基于”VPS。 每个应用程序元素保持不变(应用程序代码/节点/ npm / mongo /驱动程序等)和相同的操作系统(仍然是Centos 7)。

没有一个线索可以解决原因,但应用程序在新服务器上运行完美大约一周,而不是每隔几分钟或几小时崩溃......

希望这有助于某人!