【问题标题】:(node) warning: possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit(节点)警告:检测到可能的 EventEmitter 内存泄漏。添加了 11 个错误侦听器。使用emitter.setMaxListeners() 增加限制
【发布时间】:2016-10-08 14:23:41
【问题描述】:

我正在使用 pg 节点模块来连接数据库。我一直在为每个 DML 操作创建多个连接。当发生连续查询执行时 我收到警告消息为“(节点)警告:检测到可能的 EventEmitter 内存泄漏。添加了 11 个错误侦听器。使用emitter.setMaxListeners() 增加限制。”给定的 pg 默认 poolSize 是 5。

 var pg = require('pg')
 pg.defaults.poolSize = 5;
 var dbHelper = {
 initializeConnection: function (callback) {
    pg.connect(conString, function (err, client, done) {
        if (err) {
            done(client);
            return callback(err, null);
        }
        callback(null, client, done);
    });

    pg.on('error', function (err) {
    });
    pg.end();
},
  query: function (pgQuery, args, callback, options) {
    this.initializeConnection(function (err, client, done) {
           client.query(pgQuery, args, function (err, response) {
            done();
            return callback(err, response);
        });
    });
},
};

 module.exports = dbHelper;

示例查询

 dbHelper.query("SELECT name,age,address FROM EMPLOYEE WHERE id=$1", [1001], function (err, response) {
        callback(err, response);
    });

如何防止事件发射器内存泄漏。

【问题讨论】:

    标签: node.js postgresql memory-leaks connection node-postgres


    【解决方案1】:

    原因是你没有正确释放连接:

    pg.connect(conString, function (err, client, done) {
          if (err) {
              done(client);
              return callback(err, null);
          }
          callback(null, client, done);
      });
    

    这应该是:

    pg.connect(conString, function (err, client, done) {
        if (err) {
            callback(err, null);
        } else {
            callback(null, client);
            done();
        }
    });
    

    即当没有错误时,你调用done()

    如果您想完全避免此类错误,请查看pg-promise ;)

    【讨论】:

      猜你喜欢
      • 2012-09-04
      • 2016-06-12
      • 2014-01-03
      • 2012-12-08
      • 2018-11-15
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      相关资源
      最近更新 更多