Ich habe in ein seltsames Problem geraten, das ich nicht richtig scheinen kann.Node.js pg Pool langsam auf zweite Ausführung
Ich benutze Pg Pooling in einer Node.js App und es läuft sehr schnell auf die erste Ausführung und dann auf der zweiten ist es dramatisch langsamer (30/50s).
Ich habe durch die Dokumentation auf der Seite GitHub lesen https://github.com/brianc/node-postgres/wiki/Example
, die die Verwendung einer globalen Variablen zu erstellen, um nicht mehrere Pools zu erfordern scheint, die ich versucht habe, wie folgt zu tun.
Ich habe meine Haupt-Server-Datei unten
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);
});
, die eine Route Datei verwendet, die die Datenbankabfrage funktioniert
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;
Wenn ich eine GET-Anfrage zu dieser Strecke machen es wirklich schnell einmal ausführt die Taste wird gedrückt, aber jedes Mal, wenn sie danach gedrückt wird, wird es schrecklich langsam.
Fehle ich etwas im Code? Gibt es einen zusätzlichen Schritt, um mehrere Anfragen zu bearbeiten?
In der Vergangenheit habe ich ähnliche Probleme hatte, bekam ich verrückt mit dieser Bibliothek (node-Postgres). Dann entdecke ich [pg-promise] [1], das alles für Sie erledigt und auf Versprechen basiert. Mein Leben hat sich verändert. [1]: http://github.com/vitaly-t/pg-promise –
Es klingt wirklich nett, ich werde es auf jeden Fall einen Blick darauf werfen – Trent
@Trent Umzug in [pg-Versprechen] (https://github.com/vitaly-t/pg-promise) wird Sie von all den Kopfschmerzen mit Verbindungspools und deren Verwaltung befreien. –