gpt4 book ai didi

knex.js - 从 Knex.js 获取连接池统计信息

转载 作者:行者123 更新时间:2023-12-05 00:48:12 41 4
gpt4 key购买 nike

我的 Knex 驱动程序出现间歇性错误:

TimeoutError: Knex: 获取连接超时。游泳池可能已经满了。你错过了一个 .transacting(trx) 调用吗?

我猜,要么是我的 RDS Aurora 实例暂时无法从服务器访问,要么是我的连接池在特别繁忙的流量增长期间耗尽。我想记录并绘制连接池中可用连接与占用连接的图表,以查看我确实用尽了连接,以及连接使用高峰时是否存在特定点。但我似乎无法从谷歌那里找到是否有办法从 Knex 或其池管理器获取可用连接数。这可能吗?如果没有,是否有其他方法可以记录有关我的连接池的统计信息?

我看到有一个选项可以传递给连接池 init log,它需要一个 bool 值。我正在使用 Winston 将我的日志发送到 Loggly,而不仅仅是发送 stdout 的内容。我不知道“log”属性会记录我感兴趣的事件,但无论如何我需要将该信息作为数据获取,以便我可以以有意义的方式将其发送到 Loggly。

最佳答案

您可以通过设置环境变量 DEBUG=knex:* 运行应用程序来获取有关如何获取/返回连接池的一些信息。

Knex 使用 tarn.js 作为其池实现。有一些获取池资源信息的方法https://github.com/vincit/tarn.js/列在页面末尾。

// returns the number of non-free resources
pool.numUsed()

// returns the number of free resources
pool.numFree()

// how many acquires are waiting for a resource to be released
pool.numPendingAcquires()

// how many asynchronous create calls are running
pool.numPendingCreates()

可以通过knex.client.pool找到Pool实例。

const knex = require('knex')({ client: 'pg', connection: 'postgres://knex_test' });
knex.client.pool.numPendingCreates(); // returns 0

关于knex.js - 从 Knex.js 获取连接池统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52726905/

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