Piszę serwer WWW Node.js korzystający z bazy danych Postgres. I służy do podłączenia na każdy nowy wniosek w taki sposób:Jak używać node-postgres na serwerze?
app.get('/', function (req, res) {
pg.connect(pgconnstring, function (err, client) {
// ...
});
});
Ale po kilku wniosków, zauważyłem „out of memory” błędów na Heroku gdy próbuje się połączyć. Moja baza danych ma tylko 10 wierszy, więc nie rozumiem, jak to się mogło dziać. Wszystkie moje dostępu do bazy danych jest tej postaci:
client.query('SELECT * FROM table', function (err, result) {
if (err) {
res.send(500, 'database error');
return;
}
res.set('Content-Type', 'application/json');
res.send(JSON.stringify({ data: result.rows.map(makeJSON) }));
});
Zakładając, że błąd pamięci spowodowany był posiadające kilka stałe połączenia z bazą danych, przeszedłem do stylu widziałem w kilku node-postgres
przykładów łączenia tylko raz na top pliku:
var client = new pg.Client(pgconnstring);
client.connect();
app.get('/', function (req, res) {
// ...
});
Ale teraz moje prośby powiesić (w nieskończoność?), gdy próbuję wykonać kwerendę po połączenie zostanie przerwane. (Symulowałem go, zabijając serwer Postgres i przywracając go.)
Jak mogę zrobić jeden z nich?
- Prawidłowo puli połączeń PostgreSQL tak, że mogę „Reconnect” za każdym razem, bez uruchamiania z pamięci.
- Czy klient globalny automatycznie łączy się ponownie po awarii sieci.