我遇到了一個奇怪的問題,我似乎無法得到正確的結果。Node.js pg池緩慢執行第二次執行
我在一個Node.js應用程序中使用pg池,它在第一次執行時非常快速地運行,然後在第二次運行時它顯着變慢(30/50secs)。
我通過它似乎需要爲了使用全局變量的不創建,我已經嘗試做如下多個池GitHub的頁面https://github.com/brianc/node-postgres/wiki/Example
上的文檔閱讀。
我有波紋管
var express = require("express");
var path = require("path");
var app = express();
var port = 3000;
app.use("/public", express.static(process.cwd() + "/public"));
app.set("views", process.cwd() + "/public/views");
app.set("view engine", "ejs");
var login_route = require("./public/logic/login/login_route.js");
app.use(login_route);
app.listen(port, function() {
var message = "Server Started: Port " + port;
console.log(message);
});
我的主服務器的文件,該文件正在使用的路由文件,該文件確實數據庫查詢
var express = require("express");
var router = express.Router();
var pg = require("pg");
var credentials = {
host: "127.0.0.1",
port: "5432",
database: "altaltalt",
user: "postgres",
password: "postgres",
max: 100,
idleTimeoutMillis: 30000
};
var pool = new pg.Pool(credentials);
// this bit of code is executed
// when a button is clicked
router.get("/exec", function(req, res) {
pool.connect (
function(error, client, done) {
if(error) {
console.log("connection failed");
}
client.query(
"select * from dummytable",
function(error, result) {
done();
if(error) {
console.log(error);
}
alert(result.rows);
}
);
}
);
});
module.exports = router;
當我做一個GET請求,則執行真的很快,一旦這條路線該按鈕被按下,但任何時候它被按下後,它變得非常緩慢。
我在代碼中丟失了什麼嗎?是否有額外的步驟來處理多個請求?
在過去,我有類似的問題,我使用這個庫(節點的Postgres)瘋了。然後我發現[pg-promise] [1],它爲您完成關閉客戶的所有工作,並且基於承諾。我的生活改變了。 [1]:http://github.com/vitaly-t/pg-promise –
這聽起來真的很好,我一定會看看它 – Trent
@Trent搬進[pg-promise](https:/ /github.com/vitaly-t/pg-promise)將會消除連接池及其管理帶來的所有問題。 –