Skip to main content
Skip to main content
Edit this page

TCP connection limits

Overview

You may have a ClickHouse TCP connection (i.e., one through the command-line client) disconnect automatically after some number of queries or duration. After disconnecting, no automatic reconnection occurs (unless triggered through something else, such as sending another query in the command-line client).

Connection limits are enabled by setting the server settings tcp_close_connection_after_queries_num (for the query limit) or tcp_close_connection_after_queries_seconds (for the duration limit) to greater than 0. If both limits are enabled, the connection closes when either limit is hit first.

Upon hitting a limit and disconnecting, the client receives a TCP_CONNECTION_LIMIT_REACHED exception, and the query that causes the disconnect is never processed.

Query limits

Assuming tcp_close_connection_after_queries_num is set to N, then the connection allows N successful queries. Then on query N + 1, the client disconnects.

Every query processed counts towards the query limit. So when connecting a command-line client, there may be an automatic initial system warnings query which counts towards the limit.

When a TCP connection is idle (i.e., has not processed queries for some duration of time, specified by the session setting poll_interval), the number of queries counted so far resets to 0. This means the number of total queries in a single connection can exceed tcp_close_connection_after_queries_num if idle occurs.

Duration limits

The connection duration is measured starting as soon as the client connects. The client is disconnected on the first query after tcp_close_connection_after_queries_seconds seconds has passed.