2016-05-20 2 views
0

NodeJSアプリケーションがあり、Sequelizeを使用してPostgresデータベースに接続しています。私の開発者のversiónすべて正常に動作しますが、後で私の生産バージョンでは、2つのマシンからのいくつかの呼び出しは、次のエラーが発生します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答えのためのおかげで、私は、接続が閉じられますが、データベースがどのようにGUIなしでUbuntuのサーバにあったされていないことを同じ容疑者ですpsqlでそれを確認できますか? – oriaj

+0

私は自分の答えを更新したので、単にSQLで接続をチェックすることができます。 – Adam

関連する問題