SequelizeConnectionError:FATAL:为非复制超级用户连接保留剩余的连接槽

时间:2016-05-20 18:54:50

标签: node.js postgresql sequelize.js

我有一个NodeJS应用程序,我正在使用Sequelize连接到Postgres数据库;在我的开发人员versión一切正常,但在我的生产版本后,从两台机器做一些调用得到以下错误SequelizeConnectionError: FATAL: remaining connection slots are reserved for non-replication superuser connections.在许多问题中说解决方案是增加我的数据库中的max_connections;实际上有100个这个参数,但我不确定这是不是问题。

问题在于sequelize配置,也许我已经手动关闭了连接?

这是我的config.json文件

{
  "development": {
    "username": "pys-form",
    "password": "pys-form",
    "database": "PYS-FORM-COL",
    "host": "127.0.0.1",
    "dialect": "postgres"
  },
  "production": {
    "username": "pys-form",
    "password": "pys-form",
    "database": "PYS-FORM-COL",
    "host": "190.60.234.132",
    "dialect": "postgres"
  }
}

index.js文件

var fs        = require("fs");
var path      = require("path");
var Sequelize = require("sequelize");
var env       = process.env.NODE_ENV || "production";
var config    = require(__dirname + '/../config/config.json')[env];
var sequelize = new Sequelize(config.database, config.username, config.password, config);
var db        = {};

fs
  .readdirSync(__dirname)
  .filter(function(file) {
    return (file.indexOf(".") !== 0) && (file !== "index.js");
  })
  .forEach(function(file) {
    var model = sequelize.import(path.join(__dirname, file));
    db[model.name] = model;
  });

Object.keys(db).forEach(function(modelName) {
  if ("associate" in db[modelName]) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;   

1 个答案:

答案 0 :(得分:0)

您可能打开连接但未关闭它。打开的连接保持空闲状态,只是浪费了插槽。

如果你使用pgAdmin,你可以去工具 - > “服务器状态”菜单,查看这些待处理的连接。

你也可以试试这个来获得activity statistics

SELECT * FROM pg_stat_activity;