2016-05-20 34 views
0

我有一個NodeJS應用程序,我使用Sequelize連接到Postgres數據庫;在我的開發者版本中一切正常,但是在我的生產版本中,從兩臺機器做了一些調用之後得到以下錯誤SequelizeConnectionError: FATAL: remaining connection slots are reserved for non-replication superuser connections.在很多問題中說解決方案是增加我數據庫中的max_connections;實際上有100這個參數,但我不知道這是否是問題。SequelizeConnectionError:FATAL:其餘連接槽保留給非複製超級用戶連接

問題出在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; 

回答

0

你可能開放的連接,但不關閉它。打開的連接保持空閒狀態,只是浪費插槽。

如果您使用pgAdmin,您可以轉至工具 - >服務器狀態菜單並查看那些未決的連接。

你也可以試試這個讓activity statistics

SELECT * FROM pg_stat_activity; 
+0

嗨@Adam感謝您的回答,我懷疑同該連接不會關閉,但數據庫是Ubuntu的服務器沒有GUI如何可以檢查在psql中? – oriaj

+0

我已經更新了我的答案,因此您可以使用簡單的SQL檢查連接。 – Adam