【问题标题】:node js cluster mongoose connectionnode js集群猫鼬连接
【发布时间】:2014-09-11 13:15:55
【问题描述】:

我在我的应用程序 mongodb(未分片)中使用内置集群模块的 nodejs 用于 每个集群(worker)连接中的存储是使用 mongoose.createConnection 方法进行的,并在插入数据后关闭。

但我期望的是,每当发出请求时,它都会打开与数据库的连接并处理请求并关闭连接。

但是我注意到,当我检查 mongodb 日志时,连接仍然打开,并且它的计数略大于处理器/(集群节点)的数量。

我把 poolSize:1,autreconect:false 即使在调用 close() 方法后仍然有一些连接没有关闭。

我的观察是当连接错误发生时连接没有关闭 请帮帮我

我正在使用以下脚本来获取连接。

module.exports.getDb = function () {

    var dburl = 'mongodb://localhost/DB';


    db = mongoose.createConnection(dburl, {
        server: {
            socketOptions: {
                keepAlive: 1,
                connectTimeoutMS: 30000
            },
            auto_reconnect: false,
            poolSize: 1

        }

    }, function (err) {

        console.log(err)
    });

    db.on('error', function (err) {
        console.log(err + " this is error");
        db.close();
    });

    return db;

}

我在evey查询回调结束时使用db.close()关闭连接。

【问题讨论】:

  • 我们可以看看一些代码吗?
  • 我通过添加我的连接脚本更新了问题,这是在工作进程中。

标签: node.js mongodb mongoose


【解决方案1】:

你在寻找这样的东西吗?

db.connection.on('error', function (e) {
  console.log(e + " this is error");
  db.close();
});

对于我的 API 服务器,我为 Hapi 编写了一个插件来处理这个问题。看看吧,或许对你有帮助。

'use strict';

var bluebird = require('bluebird');
var mongoose = bluebird.promisifyAll(require('mongoose'));

exports.register = function(plugin, options, next) {

  mongoose.connect(options.mongo.uri, options.mongo.options, function (e) {
    if (e) {
      plugin.log(['error', 'database', 'mongodb'], 'Unable to connect to MongoDB: ' + e.message);
      process.exit();
    }

    mongoose.connection.once('open', function () {
      plugin.log(['info', 'database', 'mongodb'], 'Connected to MongoDB @ ' +  options.mongo.uri);
    });

    mongoose.connection.on('connected', function () {
      plugin.log(['info', 'database', 'mongodb'], 'Connected to MongoDB @ ' +  options.mongo.uri);
    });

    mongoose.connection.on('error', function (e) {
      plugin.log(['error', 'database', 'mongodb'], 'MongoDB ' + e.message);
    });

    mongoose.connection.on('disconnected', function () {
      plugin.log(['warn', 'database', 'mongodb'], 'MongoDB was disconnected');
    });
  });

  return next();
};

exports.register.attributes = {
  name: 'mongoose',
  version: '1.0.0'
};

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多