Ограничения на количество TCP-соединений
Обзор
TCP-подключение к ClickHouse (например, при использовании клиента командной строки) может автоматически разорваться после определённого количества запросов или по истечении некоторого времени. После разрыва соединения автоматическое переподключение не происходит (если только оно не инициировано чем-то ещё, например, отправкой нового запроса в клиенте командной строки).
Ограничения на соединения включаются настройками сервера
tcp_close_connection_after_queries_num (для ограничения по количеству запросов)
или tcp_close_connection_after_queries_seconds (для ограничения по длительности), заданными со значением, большим нуля.
Если включены оба ограничения, соединение закрывается при первом достигнутом лимите.
При достижении лимита и разрыве соединения клиент получает
исключение 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 секунд.