대량 삽입을위한 Java 코드를 작성했습니다. I 가져 오기 및 다른 테이블에 대해 서로 다른 연결 개체를 만들기위한 복사 명령을 사용하고 있지만, 실행하는 동안, 프로그램은 다음과 같은 오류를 던지고있다 :FATAL : 비 슈퍼 유저의 연결 제한을 초과했습니다.
FATAL: connection limit exceeded for non-superusers
대량 삽입을위한 Java 코드를 작성했습니다. I 가져 오기 및 다른 테이블에 대해 서로 다른 연결 개체를 만들기위한 복사 명령을 사용하고 있지만, 실행하는 동안, 프로그램은 다음과 같은 오류를 던지고있다 :FATAL : 비 슈퍼 유저의 연결 제한을 초과했습니다.
FATAL: connection limit exceeded for non-superusers
당신이 연결 풀을 사용하고 있습니까? 코드에서 연결이 제대로 닫혔는지 확인하십시오. try-finally 블록에서 수행해야합니다.
Connection connection = dataSource.getConnection();
try {
....
}
finally {
connection.close();
}
실제로 많은 양의 연결이 필요한 경우 이에 따라 포스트에 max_connections-property를 설정하십시오.
당신은 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을 사용할 수 있습니다.
또는 연결을 종료 할 수 있습니다. – Noumenon
내 코드는 Java 코드 내에서 연결을 제대로 닫지 않았기 때문입니다. –
우연히 모든 삽입물에 대해 새로운 연결을 생성하고 있습니까? – lawl0r