【问题标题】:node-postgres: Setting max connection pool sizenode-postgres:设置最大连接池大小
【发布时间】:2012-04-30 01:34:27
【问题描述】:

我找不到有关设置最大连接池大小的 node-postgres 驱动器的任何文档,甚至找不到它是什么(如果它不可配置)。有谁知道我如何设置最大连接数,或者默认设置是什么?

【问题讨论】:

    标签: postgresql node.js connection-pooling


    【解决方案1】:

    默认值在 node-postgres/lib/defaults https://github.com/brianc/node-postgres/blob/master/lib/defaults.js 中定义

    poolSize 默认设置为 10,0 将禁用任何池化。

    var pg = require('pg');
    pg.defaults.poolSize = 20;
    

    请注意,池仅在使用 connect 方法时使用,而不是在直接启动 Client 实例时使用。

    【讨论】:

      【解决方案2】:

      node.js 是单线程的,为什么要每个进程有超过 1 个与 db 的连接?即使您将集群 node.js 进程,您也应该每个进程最多有 1 个连接。否则你做错了什么。

      【讨论】:

      • node.js 战吼是非阻塞 IO,只有一个连接基本上使它成为对该资源的阻塞调用!简单来说,一个耗时 1 分钟的查询每分钟只能处理 1 个查询,因此 10 个连接的连接池将允许每分钟 10 个查询
      • @Jakub - 每个连接都有一个查询队列,所以是的,如果您只有一个连接,则只有在第 n-1 个查询完成时才会分派第 n 个查询。如果您有多个连接,则您有多个队列,并且它们都不一定会相互阻塞。我们将连接池化的原因是因为它们的创建和销毁成本相对较高。
      猜你喜欢
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多