pgcat을 이용한 Postgres 트랜잭션 풀링
Phil Eaton 2025년 10월 24일 Postgres는 연결되는 각 클라이언트에 ‘클라이언트 백엔드(client backend)‘라는 자체 프로세스를 할당합니다. 이 방식은 1) 리소스 경합(resource contention) 또는 2) 지연 시간(latency) 문제, 혹은 두 가지 모두 때문에 사용자는 보통 최대 클라이언트 연결 수를 수백 개 수준으로 제한합니다. 그리고 pgbouncer나 pgcat과 같은 커넥션 풀러(connection pooler)를 도입합니다. 이러한 풀러는 많은 클라이언트 연결을 단일 Postgres 클라이언트 백엔드에 투명하게 다중화(multiplexing)하여 더 많은 연결을 (더 낮은 지연 시간으로) 처리할 수 있습니다. 하지만 이 방식은 어떻게 작동하고 동작할까요? pgcat을 통해 살펴보겠습니다. Postgres 및 pgcat 빌드하기 pgcat과 Postgres를 위한 docker-compose.yml 파일을 찾아 의존성이나 설정에 대한 고민을 건너뛰고 싶었습니다. pgcat 리포지토리에 하나 있긴 했지만, (아마도 Docker가 아닌 Podman을 사용해서인지) 작동시키지 못했습니다. 다른 작동하는 docker-compose […]
