본문으로 바로가기
본문으로 바로가기

TCP 연결 제한

개요

ClickHouse TCP 연결(예: command-line client를 통한 연결)은 일정 쿼리 개수 또는 기간이 지나면 자동으로 끊어질 수 있습니다. 연결이 끊어진 후에는(예: command-line client에서 다른 쿼리를 전송하는 등, 다른 동작으로 다시 트리거하지 않는 한) 자동으로 재연결되지 않습니다.

연결 제한은 서버 설정인 tcp_close_connection_after_queries_num(쿼리 개수 제한용) 또는 tcp_close_connection_after_queries_seconds(기간 제한용)을 0보다 큰 값으로 설정하면 활성화됩니다. 두 제한이 모두 활성화된 경우, 먼저 도달한 제한으로 인해 연결이 종료됩니다.

제한에 도달하여 연결이 끊어지면 클라이언트는 TCP_CONNECTION_LIMIT_REACHED 예외를 받으며, 연결을 끊어지게 만든 해당 쿼리는 처리되지 않습니다.

쿼리 제한

tcp_close_connection_after_queries_num이 N으로 설정되어 있다고 가정하면, 해당 연결에서는 성공적으로 처리된 쿼리 N개가 허용됩니다. 이후 N + 1번째 쿼리에서 클라이언트가 연결을 끊습니다.

처리된 모든 쿼리가 쿼리 제한에 포함됩니다. 따라서 명령줄 클라이언트를 연결할 때 자동으로 실행되는 초기 시스템 경고용 쿼리가 있을 수 있으며, 이것도 제한에 포함됩니다.

TCP 연결이 유휴 상태(예: 일정 시간 동안 쿼리를 처리하지 않은 상태로, 세션 설정 poll_interval로 지정됨)가 되면, 지금까지 계산된 쿼리 수가 0으로 초기화됩니다. 이는 유휴 상태가 발생하는 경우 단일 연결에서의 전체 쿼리 수가 tcp_close_connection_after_queries_num을 초과할 수 있음을 의미합니다.

지속 시간 제한

연결 지속 시간은 클라이언트가 연결되는 즉시부터 측정됩니다. 클라이언트는 tcp_close_connection_after_queries_seconds 초가 경과한 뒤 이어지는 첫 번째 쿼리에서 연결이 끊어집니다.