ClickHouse Internals: A Deep Dive into Distributed Connection Pooling

Author: Pranav Mehta | Source: Medium | Published: 2026-02-07


한 줄 요약

ClickHouse의 분산 커넥션 풀은 서버 측 idle timeout으로 닫힌 연결을 클라이언트가 재사용 시도할 때 경고 로그를 발생시키지만, 이는 버그가 아닌 설계된 동작이며 쿼리 실패 없이 자동 복구된다.

핵심 주장/내용

  • Distributed 테이블 쿼리 시 TCP 커넥션 풀의 stale 연결 재사용 경고가 버그처럼 보이지만 실제로는 정상 동작이다
  • 서버의 idle_connection_timeout(기본 1시간)으로 닫힌 연결을 클라이언트가 감지하지 못하고 재사용 시 Broken Pipe 에러가 발생한다
  • 스파이크성/버스트 워크로드에서 특히 빈번하게 발생: 부하 급증 → 유휴 기간 → 타임아웃 → 재부하 시 stale 연결 사용
  • connections_with_failover_max_tries(기본 7)로 자동 재시도하여 쿼리 실패는 발생하지 않는다
  • 온프레미스 환경에서는 모든 미설명 경고가 중요하며, 시스템 내부 동작을 깊이 이해해야 한다

주요 수치 / 사실

  • distributed_connections_pool_size: 4096 (기본값)
  • idle_connection_timeout: 1시간 (기본값)
  • connections_with_failover_max_tries: 7 (기본값)
  • 결론: 커넥션 누수 없음, 설정 변경 불필요

관련 위키


Source: 원문 보기