私はデータベースを照会するためにpg-promiseを使用しています。私はHerokuののPostgresの(無料版)を使用しているので、接続の最大数が、DBに接続するために20pg-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に無期限の接続が増加し、私のアプリのクラッシュの数をプールのサイズを設定していたとしても。
どうすればこの問題を解決できますか?クエリを実行するたびにクライアントをリリースする必要がありますか?
EDIT:
だから私は、これは私がそれを今使用している、と私はまだ同じ問題を抱えている正確にどのようにされ、私のコードを編集しました。
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}));
});
ありがとうございました:) これで私はこれを好きなように使っています(同じ問題が残っています): const pgp = require( 'pg-promise')(); pgp.pg.defaults.poolSize = 10; const db = pgp(process.env.DATABASE_URL); db .any(...)。then(...).catch(...) – justasking
@justaskingプールサイズが最大になると、ライブラリはクラッシュしません。あなたのアプリがクラッシュした場合、それは他の何かでなければなりません。デバッグし、正確に何がうまくいかないかを確認してください。そしてここにエラースタックを投稿してください;) –
クラッシュは問題ではありません。問題は、データベースで何かを照会するたびに新しい接続が確立され、接続数が設定したpoolSizeを超えてしまうことです。プールの仕組みが誤解されている可能性がありますが、私がここで解決したい問題は、データベースへの接続が常に20未満になることです。 – justasking