SessionFactory连接如何与pgbouncer池一起使用?

时间:2017-06-29 21:38:50

标签: hibernate connection-pooling postgresql-9.4 sessionfactory pgbouncer

我们有一个用java开发的大型模拟,这个模拟的每个运行都是一个在网格中的节点上运行的jar。通常约有3千个工作在几个网格上运行。在jar中是使用Hibernate连接到数据库并将数据写入pg数据库的类,其中每个作业都是表中的一行。基本上每个正在运行的作业都会插入并更新自己的行。

但是由于每个jar基本上都是独立的,每个运行的jar都会创建一个SessionFactory来完成工作,我们很快就会超过数据库的最大连接数。我实际上没有意识到SessionFactory建立了与数据库的连接。我只是认为它打开了与数据库的连接以便在事务中工作。因此,单独打开会话工厂连接会限制可以记录其工作的作业数量。

我们查看了pgbouncer,根据文档,似乎只在会话或交易期间发出连接。这是否包括SessionFactory本身的连接?由于SessionFactory和过去max_connections的所有其他作业都被阻止,因此每个作业(可持续数小时到数天)保持与数据库的开放连接。

感谢您的帮助

0 个答案:

没有答案