首页 > 解决方案 > 节点模块 pg client.end() 不关闭连接

问题描述

我的应用程序仅每 3 秒进行一次选择查询,当我运行超过 1 个具有相同应用程序数据库连接的 pod 时,有超过 20 个活动连接。

async test (text) {
    const client = new Client(main_db);
    await client.connect();
    try {
        const result = await client.query(text);
        return result.rows;
    } finally {
        await client.end();
    }
}

这是女巫用来进行查询的方法,在 git 上发布,有贡献者被告知使用此方法

我该如何解决?

标签: node.jspostgresql

解决方案


如果您使用的是连接池,则无法end连接。您必须将release连接返回到池才能重新使用。

参考https://node-postgres.com/api/pool#release-err-error-

如果您为每个触发的查询创建一个新连接,那么您不应该遇到上述问题。如果您不关闭连接,则客户端不会有任何问题(类似于问题中提到的问题)。但是数据库会超载。


推荐阅读