我写了一个用于批量插入的java代码。我正在使用复制命令为不同的表导入和创建不同的连接对象,但是在执行时,程序抛出以下错误:
FATAL: connection limit exceeded for non-superusers
我写了一个用于批量插入的java代码。我正在使用复制命令为不同的表导入和创建不同的连接对象,但是在执行时,程序抛出以下错误:
FATAL: connection limit exceeded for non-superusers
您已超出 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。
你在使用连接池吗?检查您的代码中的连接是否正确关闭。这应该在 try-finally 块中完成:
Connection connection = dataSource.getConnection();
try {
....
}
finally {
connection.close();
}
如果您确实需要大量连接,请相应地在 postres 中设置 max_connections-property。