gpt4 book ai didi

node.js - Nodejs + Knex + Postgres : Unhandled rejection Error: Pool is destroyed

转载 作者:搜寻专家 更新时间:2023-10-31 23:28:03 24 4
gpt4 key购买 nike

我和我的团队使用 knex 和 postgres 来处理我们所有的数据库工作。有时,我们会收到以下错误:

Knex:Error Pool2 - error: too many connections for role "<rolename>"

每个请求都会出现此错误:

 app[web.2]: Unhandled rejection Error: Pool is destroyed
app[web.2]: at Pool.acquire (/app/node_modules/knex/node_modules/pool2/lib/pool.js:163:12)
app[web.2]: at /app/node_modules/knex/lib/client.js:204:19
app[web.2]: at tryCatcher (/app/node_modules/knex/node_modules/bluebird/js/main/util.js:26:23)
app[web.2]: at Promise._resolveFromResolver (/app/node_modules/knex/node_modules/bluebird/js/main/promise.js:480:31)
app[web.2]: at new Promise (/app/node_modules/knex/node_modules/bluebird/js/main/promise.js:70:37)
app[web.2]: at Client.acquireConnection (/app/node_modules/knex/lib/client.js:200:12)
app[web.2]: at /app/node_modules/knex/lib/runner.js:138:49
app[web.2]: at tryCatcher (/app/node_modules/knex/node_modules/bluebird/js/main/util.js:26:23)
app[web.2]: at Function.Promise.attempt.Promise.try (/app/node_modules/knex/node_modules/bluebird/js/main/method.js:31:24)
app[web.2]: at Runner.ensureConnection (/app/node_modules/knex/lib/runner.js:137:26)
app[web.2]: at Runner.run (/app/node_modules/knex/lib/runner.js:30:31)
app[web.2]: at QueryBuilder.Target.then (/app/node_modules/knex/lib/interface.js:27:43)
app[web.2]: at QueryBuilder.tryCatcher (/app/node_modules/bookshelf/node_modules/bluebird/js/main/util.js:26:23)
app[web.2]: at doThenable (/app/node_modules/bookshelf/node_modules/bluebird/js/main/thenables.js:52:38)
app[web.2]: at tryConvertToPromise (/app/node_modules/bookshelf/node_modules/bluebird/js/main/thenables.js:30:20)
app[web.2]: at Promise._resolveCallback (/app/node_modules/bookshelf/node_modules/bluebird/js/main/promise.js:442:24)
app[web.2]: at Promise._settlePromiseFromHandler (/app/node_modules/bookshelf/node_modules/bluebird/js/main/promise.js:515:17)
app[web.2]: at Promise._settlePromiseAt (/app/node_modules/bookshelf/node_modules/bluebird/js/main/promise.js:581:18)
app[web.2]: at Promise._settlePromises (/app/node_modules/bookshelf/node_modules/bluebird/js/main/promise.js:697:14)
app[web.2]: at Async._drainQueue (/app/node_modules/bookshelf/node_modules/bluebird/js/main/async.js:123:16)
app[web.2]: at Async._drainQueues (/app/node_modules/bookshelf/node_modules/bluebird/js/main/async.js:133:10)
app[web.2]: at Immediate.Async.drainQueues [as _onImmediate] (/app/node_modules/bookshelf/node_modules/bluebird/js/main/async.js:15:14)
app[web.2]: at processImmediate [as _immediateCallback] (timers.js:368:17)

我们的池设置是:

pool: {
min: 2,
max: 10
}

我们尝试将其设置为 min:0但这没有帮助。至少在本地。

问题 1:我们能否跟踪事件连接数并确保没有任何“孤立”连接?如果是,怎么办?

问题 2:是 Pool is destroyed发生错误是因为我们无法与数据库建立连接,因此 Knex 假定池不存在?

问题 3:我们能否以某种方式将 API 设置为在无法建立连接并等待打开连接时进入“待机模式”?

问题 4:对于任何类型的生产应用程序,最大设置 10 是否太低?我们仍处于测试阶段,但我们的流量很快就会大幅增加。

更新:

我们甚至增加了我们的 pool.max到 15,我们仍然有这个问题。

最佳答案

问题出在数据库连接上。您可以检查您的数据库相关配置,例如用户名和密码。

关于node.js - Nodejs + Knex + Postgres : Unhandled rejection Error: Pool is destroyed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33171787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com