当前位置: 首页 > 知识库问答 >
问题:

ORM/查询生成器库连接池大小和pgbouncher连接池大小有什么区别?

姬安志
2023-03-14

我对pgbouncer池大小配置和ORM(如sequelize.js)、query builder(如knex.js)库池大小配置感到困惑。架构如下:

应用代码=

pgbouncer.ini:

;; ...
;; Default pool size.  20 is good number when transaction pooling
;; is in use, in session pooling it needs to be the number of
;; max clients you want to handle at any moment
;default_pool_size = 20
;; ...

sequelize连接池配置:

const sequelize = new Sequelize(/* ... */, {
  // ...
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

knex.js连接池配置:

var knex = require('knex')({
  client: 'mysql',
  connection: {
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  },
  pool: { min: 0, max: 7 }
});

如果我使用sequelize会发生什么。js连接池配置和pgbouncer连接池大小配置一起?数据库服务器使用哪种配置?我应该只使用其中一个吗?谢谢

共有2个答案

夏侯鹏
2023-03-14

例如,如果有3个应用程序进程运行knex或sequelize,则应将pgbouncer poolsize设置为比单个knex/sequelize池使用的大小大3倍。

然后您还需要确保postgres服务器也配置了足够的连接来处理pgbouncher连接。

尽管正如@jjanes所说。没有理由将pgbouncer与knex/sequelize一起使用,因为它们已经提供了池。我想pgbouncer应该与不支持池的框架一起使用。例如,如果PHP或cgi stript在每次页面加载时重新初始化,并调用数据库。

申屠锦
2023-03-14

菊花链式连接池很少有意义。因此,除了使用内置的pgbounker之外,可能没有任何意义。数据库服务器不知道您的连接池,除非池管理器向数据库发送自己的显式命令,并且它有自己的配置文件(postgresql.conf)。

 类似资料:
  • 嘿,我正在使用Glassfish开源v4,我遇到了一个奇怪的问题。 我在管理控制台中定义了到Oracle 11g的JDBC连接池,并设置了: 初始和最小池大小:500 最大游泳池大小:1000 池大小调整数量::750 我已经为这个连接池创建了一个特定的用户。然而,有时当我检查数据库中打开的连接时,我发现有1000多个连接(我看到的最大连接数是1440个) 当发生这种情况时,任何查询尝试都会失败,

  • 问题内容: 为什么在hibernate配置文件中为连接池设置10?size = 1是内置的size。为什么需要增加大小? 问题答案: 来自Hibernate API 文档。 但是,Hibernate自己的连接池算法非常初级。它旨在帮助您入门,不适合在生产系统中使用,甚至不用于性能测试。您应该使用第三方池来获得最佳性能和稳定性。只需将hibernate.connection.pool_size属性替

  • 我目前正在使用okhttp 3.10.0,我最近才发现,为每个新请求创建一个新的客户端对每个拥有自己连接池的客户端都是有害的。 我在servlet中使用okhttp。我现在要做的就是在每个servlet中声明一个静态客户机,并在init()方法中初始化它 这里是最大空闲连接的配置,我将其设置为20,空闲超时设置为5分钟。 1)实际的池大小是多少,即池将具有的最大连接(通过代码查看,我发现它可能是I

  • 我无法使用spring webflux和r2dbc(使用r2dbc池驱动程序)打开超过10个连接。我的配置如下所示: 当我指定10个以上的连接时,会出现如下错误: 此外,连接的数量保持与初始大小相同。未创建新连接。

  • 在OkHttp中,我找不到设置硬最大连接池大小的方法。从留档https://square.github.io/okhttp/3.x/okhttp/okhttp3/ConnectionPool.html很明显,您可以设置最大空闲连接,但不能设置整体最大值。这意味着在高负载下,它可以增长超过任何限制。 有没有办法最大化池?如果没有,为什么没有?

  • Microprofile允许从RestClient定义connectionPoolSize,如下所示: 当我在我的项目中设置此属性时,Quarkus会忽略它。我该如何定义它?