Как разрешить FATAL: предел подключения превышен для не-суперпользователей

Я написал код Java для массовой вставки. Я использую команду копирования для импорта и создания разных объектов подключения для разных таблиц, но при выполнении программы она вызывает следующие ошибки:

FATAL: connection limit exceeded for non-superusers

Ответ 1

Вы превысили лимит подключения сервера 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.

Предупреждение: увеличение предела подключения повлияет на память.

попробуйте оптимизировать соединение, используя пул соединений либо в приложении, либо в слое db. на PostgreSQL вы можете использовать Pgpool2.

Ответ 2

Используете ли вы пул соединений? Проверьте, правильно ли подключены соединения в коде. Это должно быть сделано в блоке try-finally:

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

Если вам действительно нужно большое количество подключений, установите свойство max_connections в postres соответственно.

Документация