max_connections
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | typically 100 connections | postmaster (재시작) | integer |
| 15 | typically 100 connections | postmaster (재시작) | integer |
| 16 | typically 100 connections | postmaster (재시작) | integer |
| 17 | typically 100 connections | postmaster (재시작) | integer |
| 18 | typically 100 connections | postmaster (재시작) | integer |
| 19 | typically 100 connections | postmaster (재시작) | integer |
데이터베이스 서버에 동시에 맺을 수 있는 최대 연결 수를 정한다. 기본값은 보통 100이며, 커널 설정이 이를 받쳐주지 못하면 initdb 단계에서 더 낮게 잡힐 수 있다. 이 파라미터는 서버를 시작할 때만 설정할 수 있다.
PostgreSQL은 max_connections 값을 기준으로 일부 자원의 크기를 정한다. 이 값을 키우면 shared memory를 비롯한 관련 자원 할당이 함께 늘어난다. 그래서 무작정 크게 잡으면 연결당 오버헤드와 메모리 사용이 늘어 오히려 서버 효율이 떨어질 수 있다.
standby 서버를 운영한다면 이 값을 primary 서버와 같거나 더 높게 설정해야 한다. 그렇지 않으면 standby에서 쿼리 실행이 허용되지 않는다.
운영 노트: 동시 연결이 많이 필요한 환경이라면
max_connections를 무리하게 키우기보다 PgBouncer 같은 connection pooler를 앞단에 두는 편이 일반적이다. 각 backend가 차지하는 메모리와 컨텍스트 스위칭 비용을 고려하면 연결 수는 적정선으로 제한하는 쪽이 안정적이다.출처: PostgreSQL 18 문서