Mongo 首次连接时无法连接到服务器
Mongo failed to connect to server on first connect
我知道这是讨论问题的一种方式,并且已经遍历了我在 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)
服务器是 VPS (OpenVZ) 运行 Centos 7.
MongoDB 完全按照文档中的描述使用推荐的 .rpm
方法安装。
即使应用程序因上述错误而崩溃,我也能够通过 shell.
连接并发出查询
日志中没有关于该错误或可能导致该错误的内容。唯一的启动警告是关于使用 xfs 而不是 ext4 以及关于使用 MongoDB 和 OpenVZ。
对 mongod.conf 所做的唯一配置更改是侦听端口和启用授权。
mongojs使用的连接字符串如下
var mongojs = require('mongojs');
var db = mongojs('mongodb://username:password@127.0.0.1:20000/database')
呼救时刻
拜托各位!帮帮我...这真的很烦人,无法确定是我、驱动程序还是设置搞砸了!
提前致谢
更新
删除打包版本的数据库,手动安装,还是没有结果!错误仍然存在...
这是解决我们问题的方法。
更改了服务器并从 OpenVZ 移出到 KVM "based" VPS。
每个应用程序元素都保持不变(app code/node/npm/mongo/drivers 等),并且相同 OS(仍然是 Centos 7)。
不知道为什么,但该应用程序 运行 在新服务器上完美运行了大约一个星期,而不是每隔几分钟或几小时就崩溃...
希望这对某人有所帮助!
我知道这是讨论问题的一种方式,并且已经遍历了我在 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)
服务器是 VPS (OpenVZ) 运行 Centos 7.
MongoDB 完全按照文档中的描述使用推荐的 .rpm
方法安装。
即使应用程序因上述错误而崩溃,我也能够通过 shell.
连接并发出查询日志中没有关于该错误或可能导致该错误的内容。唯一的启动警告是关于使用 xfs 而不是 ext4 以及关于使用 MongoDB 和 OpenVZ。
对 mongod.conf 所做的唯一配置更改是侦听端口和启用授权。
mongojs使用的连接字符串如下
var mongojs = require('mongojs');
var db = mongojs('mongodb://username:password@127.0.0.1:20000/database')
呼救时刻
拜托各位!帮帮我...这真的很烦人,无法确定是我、驱动程序还是设置搞砸了!
提前致谢
更新
删除打包版本的数据库,手动安装,还是没有结果!错误仍然存在...
这是解决我们问题的方法。
更改了服务器并从 OpenVZ 移出到 KVM "based" VPS。 每个应用程序元素都保持不变(app code/node/npm/mongo/drivers 等),并且相同 OS(仍然是 Centos 7)。
不知道为什么,但该应用程序 运行 在新服务器上完美运行了大约一个星期,而不是每隔几分钟或几小时就崩溃...
希望这对某人有所帮助!