【问题标题】:Connection Pooling in typeorm with postgressql使用 postgresql 在 typeorm 中进行连接池
【发布时间】:2021-05-07 03:35:34
【问题描述】:

我已经阅读了足够多关于使用 typeorm 和 postgressql 设置连接池的文章和 typeorm 官方文档,但找不到解决方案。

到目前为止,我看到的所有文章都解释了在 orm 配置或连接池中添加 max/Poolsize 属性,但这并不是在数据库中设置空闲连接池。

当我在应用程序启动后验证 pg_stat_activity 表时,我看不到数据库中的任何空闲连接,但是当向应用程序发送请求时,我可以看到与数据库的活动连接

在 orm 配置中的 extras 下定义的 max/poolSize 属性仅作为从应用程序到数据库可以同时打开的最大连接数。

我期待的是,在引导过程中,应用程序会打开预定义数量的与数据库的连接,并将其保持在空闲状态。当一个请求进入应用程序时,其中一个空闲连接被拾取并提供服务。

谁能提供有关如何使用 typeorm 和 postgresql 定义此配置的见解?

【问题讨论】:

  • 你能显示一些代码吗?您是如何实现这一目标的?
  • 您是否对此进行了深入研究?我也有点困惑,如果它只是在需要时打开新连接,它是如何池连接的。

标签: node.js postgresql nestjs typeorm


【解决方案1】:

据我所知,TypeORM 使用node-postgres,它内置在 pg-pool 中并且没有那种选项。它支持最大值,并且当您的应用程序需要更多连接时,它会创建它们,所以如果您想预热它,或者可能对其进行加载/压力测试,并查看那些额外的连接,您需要编写一些代码关闭一堆异步查询/插入。

我想我理解你在寻找什么,因为我以前做企业 Java,像 glassfish 和 jboss 这样的连接池有更多选择,你可以在池中保留未使用的热连接。不过 TypeORM/node-postgres 中没有这样的选项。

【讨论】:

  • 非常感谢,我的理解和你一样,typeorm/node-postgres 没有预热连接的选项。我想接触更广泛的受众并确认这一点,因为文档在这方面不是很清楚
  • 尝试询问他们的 slack(主要 typeorm 页面上的链接),但我认为答案可能是您需要对 node-postgres 进行 PR 以向池行为添加内容。
猜你喜欢
  • 2016-06-03
  • 1970-01-01
  • 2020-01-11
  • 2013-03-12
  • 2016-05-19
  • 2013-10-12
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多