12

我写了一个用于批量插入的java代码。我正在使用复制命令为不同的表导入和创建不同的连接对象,但是在执行时,程序抛出以下错误:

FATAL: connection limit exceeded for non-superusers
4

2 回答 2

12

您已超出 PostgreSQL 服务器的连接限制。有一些为超级用户保留的连接。

要增加连接限制,您必须更改 postgresql.conf(默认为 100),它位于您的 PostgreSQL 数据目录中。

cat postgresql.conf | grep max_connection max_connections = 100
        # (change requires restart)
# Note:  Increasing max_connections costs ~400 bytes of shared memory per
# max_locks_per_transaction * (max_connections + max_prepared_transactions)

增加限制并重新启动 PostgreSQL 实例。

警告:增加连接限制会影响内存。

尝试在应用程序或数据库层使用连接池优化连接。在 PostgreSQL 上,您可以使用Pgpool2

于 2012-11-27T12:19:06.580 回答
5

你在使用连接池吗?检查您的代码中的连接是否正确关闭。这应该在 try-finally 块中完成:

Connection connection = dataSource.getConnection();
try {
    ....
}
finally {
    connection.close();
}

如果您确实需要大量连接,请相应地在 postres 中设置 max_connections-property。

文档

于 2012-11-27T10:17:41.697 回答