0
所以我使用pg-promise來查詢我的數據庫。由於我使用的Heroku Postgres的(免費版),最大連接數爲20使用pg-promise的連接
要連接到數據庫,我用
pgp(process.env.DATABASE_URL + '?poolSize=10')
.connect()
.then(sco => {
dbclient = sco;
})
.catch(err => {
console.error(err);
})
我使用dbclient變量來運行查詢,例如
dbclient
.one('select ...')
.then(() => ...)
.catch(res.status(500).send);
即使我設置池的大小爲10,無限期連接增加,我的應用程序崩潰的數量。
我該如何解決這個問題?我每次運行查詢時都必須發佈客戶端嗎?
編輯:
所以我編輯我的代碼,這是我究竟是如何使用它,現在,我仍然有同樣的問題。
const pgp = require('pg-promise')();
pgp.pg.defaults.poolSize = 10;
router.get('/', (req, res) => {
pgp(process.env.DATABASE_URL).any('select ...')
.then((result) => res.status(200).send(result))
.catch(err => res.status(500).send({err}));
});
感謝您抽出寶貴的時間:) 好了,所以現在我使用它像這樣(仍然有同樣的問題): 常量PGP =需要(「PG-承諾」)(); pgp.pg.defaults.poolSize = 10; const db = pgp(process.env.DATABASE_URL); db .any(...)。then(...).catch(...) – justasking
@justasking當池大小達到最大值時,庫不會崩潰。如果你的應用程序崩潰了,那麼它肯定是別的東西。嘗試調試並查看究竟出了什麼問題。你應該在這裏發佈錯誤堆棧;) –
崩潰不是問題。問題是每次我在數據庫中查詢某個東西時都會建立一個新連接,並且連接數超出了我設置的poolSize。有可能我誤解了池的工作方式,但是我想在這裏解決的問題是總是少於20個連接到數據庫。 – justasking