【发布时间】:2012-12-18 22:11:45
【问题描述】:
我有一个应该永远运行的 Node.js 应用程序,并且正在创建一个 mongodb 连接。但是,连接会在几秒钟后关闭并导致应用程序崩溃。我已将所有代码剥离回创建连接方法。应用代码:
var mongoose = require('mongoose'),
db = mongoose.createConnection("mongodb://localhost:28017/mwa");
然后几秒钟后我得到:
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: connection closed
at [object Object].<anonymous> (/home/gavin/mwa/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:557:24)
at [object Object].emit (events.js:88:20)
at [object Object].<anonymous> (/home/gavin/mwa/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:109:15)
at [object Object].emit (events.js:70:17)
at Socket.<anonymous> (/home/gavin/mwa/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:427:12)
at Socket.emit (events.js:67:17)
at Array.0 (net.js:335:10)
at EventEmitter._tickCallback (node.js:192:40)
【问题讨论】:
-
发生这种情况时,您是否检查过 MongoDB 是否正在重新启动?检查其日志文件是否存在导致连接中断的问题。
-
日志没有显示任何内容,但是您的评论提示我尝试重新启动 mongo。那确实有效:)如果您将其添加为答案,我将接受;)
-
好的,我添加了一个答案。
-
不确定 MongoDB,但在大多数(传统数据库)中,最好按需打开/关闭连接,而不是让它永远打开。数据库驱动程序通常经过优化以在后台创建和管理池连接,因此(打开/关闭)往往非常快。
-
mongod 默认监听 27017 端口,28017 上提供 web-stats。希望连接的端口号不要混淆。