내 제품에 Postgres DB를 사용하고 있습니다. 매끄러운 3을 사용하여 일괄 삽입을 수행하는 동안 오류 메시지가 나타납니다.
org.postgresql.util.PSQLException : FATAL : 죄송합니다. 이미 클라이언트가 너무 많습니다.
내 일괄 삽입 작업은 수천 개 이상의 레코드가 될 것입니다. 내 postgres의 최대 연결은 100입니다.
최대 연결을 늘리는 방법은 무엇입니까?
내 제품에 Postgres DB를 사용하고 있습니다. 매끄러운 3을 사용하여 일괄 삽입을 수행하는 동안 오류 메시지가 나타납니다.
org.postgresql.util.PSQLException : FATAL : 죄송합니다. 이미 클라이언트가 너무 많습니다.
내 일괄 삽입 작업은 수천 개 이상의 레코드가 될 것입니다. 내 postgres의 최대 연결은 100입니다.
최대 연결을 늘리는 방법은 무엇입니까?
답변:
단지 증가시키는 max_connections
것은 나쁜 생각입니다. 당신은 증가시켜야 shared_buffers
하고 kernel.shmmax
뿐만 아니라.
고려 사항
max_connections
데이터베이스 서버에 대한 최대 동시 연결 수를 결정합니다. 기본값은 일반적으로 100 개의 연결입니다.
연결 수를 늘리기 전에 배포를 확장해야 할 수 있습니다. 그러나 그 전에 연결 제한을 늘려야하는지 여부를 고려해야합니다.
각 PostgreSQL 연결은 연결 또는이를 사용하는 클라이언트를 관리하기 위해 RAM을 사용합니다. 연결이 많을수록 데이터베이스를 실행하는 데 사용할 수있는 RAM이 더 많이 사용됩니다.
잘 작성된 앱은 일반적으로 많은 수의 연결이 필요하지 않습니다. 많은 수의 연결이 필요한 앱이있는 경우 연결을 풀링 할 수있는 pg_bouncer 와 같은 도구를 사용하는 것이 좋습니다. 각 연결이 RAM을 소비하므로 사용을 최소화해야합니다.
최대 연결을 늘리는 방법
1. 증가 max_connection
및shared_buffers
에 /var/lib/pgsql/{version_number}/data/postgresql.conf
변화
max_connections = 100
shared_buffers = 24MB
에
max_connections = 300
shared_buffers = 80MB
shared_buffers
구성 파라미터는 얼마나 판정 기억 되는 전용 에 사용하는 PostgreSQL 데이터를 캐싱 .
2. kernel.shmmax 변경
당신은 할 커널 최대 세그먼트 크기를 증가 할 필요가 약간 큰
댄 shared_buffers
.
파일에서 /etc/sysctl.conf
아래와 같이 매개 변수를 설정합니다. postgresql
재부팅 할 때 적용 됩니다 (다음 줄은 커널을 최대로 만듭니다 96Mb
).
kernel.shmmax=100663296
참고 문헌
cat /proc/sys/kernel/shmmax
변경하기 전에 현재 kernel.shmmax 설정 ( )을 확인하십시오 . 현대 시스템에서는 이미 엄청나게 높게 설정되어 있으므로 변경해서는 안됩니다. Mine은 18446744073692774399
Ubuntu 18.04에서 기본적으로 설정됩니다 .
위니의 훌륭한 대답에 덧붙여,
누군가 설정에서 postgresql.conf 파일 위치를 찾을 수없는 경우 언제든지 postgres 자체에 요청할 수 있습니다.
SHOW config_file;
나를 위해 max_connections를 변경하는 것만으로도 트릭을 만들었습니다.
/etc/postgresql/11/main/postgresql.conf
/ var / lib / pgsql / data 또는 / usr / local / pgsql / data /에있는 postgresql.conf 파일의 max_connections 변수를 변경합니다.