跳到主要内容
跳到主要内容

TCP 连接限制

概述

您可能会发现 ClickHouse 的 TCP 连接(即通过 命令行客户端)在执行一定数量的查询或持续时间后自动断开。 断开后,不会自动重新连接(除非通过其他方式触发,例如在命令行客户端发送另一个查询)。

连接限制通过设置服务器选项 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 秒后,客户端在第一个查询时会断开连接。