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

PgBouncer与WildFly/Application Server连接池的优势?

金亦
2023-03-14

许多应用服务器都集成了连接池,甚至可以配置独立的应用程序来使用HikariCP、Apache DBCP等。

那么,当应用程序已经有了连接池时,使用PgBouncer有什么好处呢?

我找到的最接近的答案是,将事务池与pgbouncer一起使用有什么好处?其中没有提到使用另一个连接池,并提到其优点是空闲会话的使用。

我主要使用配置有最小池大小、最大池大小、空闲超时的WildFly......因此,当它们不使用时,它基本上会删除空闲连接(如果这是主要优势)。

这让我觉得PgBouncer不适合这个场景,我只应该继续使用我的应用服务器连接池。

顺便说一句,在事务池模式下,PgBouncher不能使用命名准备语句,这看起来不像是性能明智的选择。

如果有任何优势,它与wildfly连接池配合得好吗?

共有1个答案

郭鸿信
2023-03-14

如果您的应用程序服务器包含一个连接池,并且只有一个应用程序服务器连接到数据库,那么最好使用集成的连接池。

在这种情况下,pgBounencer只是一个额外的组件,使架构更加复杂,并且您将承担应用程序服务器和pgBounencer之间所有连接的额外开销。

如果有多个应用服务器连接到同一个数据库,问题就不再那么简单了。如果只有两三个应用服务器,没有pgBouncher你可能会过得很好。

连接到数据库服务器的应用程序服务器越多,您将拥有越多的数据库连接,这将使数据库处于危险之中:如果这些连接中的太多同时变得繁忙,您的数据库性能和响应时间将下降,因为数据库过载。在这种情况下,pgBounencer将通过限制与数据库的活动连接数量来提供帮助。

 类似资料:
  • 我使用postgres、wildfly-swarm、hibernate,我的事务是bean管理的。 my Project-defaults.yml datasources:data-sources:part 在模拟应用程序和postgres之间的连接丢失(关闭DB、iptables丢弃数据包等,然后执行一些请求,然后再次启动DB或清除iptables丢弃规则)后,DB已启动,但Hibernate/

  • 在我的程序中,我正在访问wep api。最多可以有7个不同的线程访问web api的不同服务器。每个线程负责一个服务器,每个服务器速率限制每个线程。每个线程更新相同的mysql数据库。线程数保持不变。 在我的示例中,是否需要连接池?我不应该只打开7个不同的连接,这些连接将在程序的生命周期中打开吗?

  • 我有(假设)以下服务器为我的应用程序;我的工作与MySQL。 1) 应用程序使用的数据库(服务器位于日本) 2)数据库备份(服务器位于秘鲁) 3)紧急数据库(服务器位于美国) 关于Spring的功能,我有几个问题: A) 如何在所有数据源中同时持久化? 如何在Spring中创建连接池,以便如果我的第一个数据源没有响应,系统会自动与第二个数据源一起工作? 这是我实际的 问候

  • 我们使用PgBouncer作为基于spring的应用程序连接池的中间件。在应用程序中,我们使用HikariCP进行应用程序级连接池。 我们将HikariCP的值设置为一小时,将设置为30秒。

  • 那么有什么方法可以在JBoss中获得多个用户连接池呢?

  • 我对连接池有一些疑问。在SQL Server连接池文章中提到的内容类似于“打开新连接时,如果连接字符串与现有池不完全匹配,则会创建一个新池。每个进程、每个应用程序域、每个连接字符串以及使用集成安全性时、每个Windows标识将连接池化。” 现在我有了自己的windows窗体应用程序,它具有SQL连接。 > 所以当我打开应用程序时,SQL连接首次打开,并创建了一个池。所以,如果我关闭应用程序池会被自