ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

clickhouse处理超时问题

2022-03-07 16:34:27  阅读:938  来源: 互联网

标签:execution HTTP 处理 查询 default timeout 超时 clickhouse


以下设置可以调整users.xml参数,或者使用SQL-driven来管理用户权限,通过执行以下sql也可以达到同等效果。

一、HTTP协议(8123端口)

  HTTP协议是ClickHouse在生产环境中最常使用的交互方式,包括官方提供的jdbc driver、阿里云DMS、DataGrip,后台使用的都是HTTP协议。HTTP协议常用的端口号为8123。

1.如何处理distributed_ddl_task_timeout超时问题

分布式DDL查询(带有 on cluster clause)的执行等待时间,系统默认是180s。您可以执行以下命令来设置全局参数,设置后需要重启集群。

 
set global on cluster default distributed_ddl_task_timeout = 1800;

 

由于分布式DDL是基于zookeeper构建任务队列异步执行,执行等待超时并不代表查询失败,只表示之前发送还在排队等待执行,用户不需要重复发送任务。

2.如何处理max_execution_time超时问题

一般查询的执行超时时间,默认设置是7200s,jdbc driver、DataGrip上默认是30s。超时限制触发之后查询会自动取消。用户可以进行查询级别更改,例如select * from system.numbers settings max_execution_time = 3600,也可以执行以下命令来设置全局参数。  
set global on cluster default max_execution_time = 3600;

 

3.如何处理socket_timeout超时问题

HTTP协议在监听socket返回结果时的等待时间,默认设置是7200s,jdbc driver、DataGrip上默认是30s。该参数不是Clickhouse系统内的参数,它属于jdbc在HTTP协议上的参数,但它是会影响到前面的max_execution_time参数设置效果,因为它决定了客户端在等待结果返回上的时间限制。所以一般用户在调整max_execution_time参数的时候也需要配套调整socket_timeout参数,略微高于max_execution_time即可。用户设置参数时需要在jdbc链接串上添加socket_timeout这个property,单位是毫秒,例如:'jdbc:clickhouse://127.0.0.1:8123/default?socket_timeout=3600000'。

4.如何处理使用SLB链接时的异常断链

SLB链接在长时间内没有数据报文发送时会自动断开链接,客户端收到”read timeout“错误,查询无法追踪。对于这种情况可以执行以下命令来设置全局参数,设置后需要重启集群。  
set global on cluster default send_progress_in_http_headers = 1; 
set global on cluster default http_headers_progress_interval_ms = 60000; 
--对于最新版本您需要使用如下命令,设置失败时可以先申请小版本升版。
 
set global on cluster default http_server_enable_tcp_keep_alive = 1; 
set global on cluster default tcp_keep_alive_timeout = 60; 

 

开启send_progress_in_http_headers后,ClickHouse服务端会不断发送包含查询进度的HTTP-Header报文给客户端,这样就会一直有数据报文流通,避免链接断开。

因为各种原因客户端失联后,HTTP协议发送的查询仍然会继续执行。用户可以在系统表追踪到查询是否成功执行。
--查询集群中所有实例当前正在running的查询:
 
select * from remote(default, system, processes) where query like 'XXX'
--查询当天的历史查询结果,包括是否成功、已经失败的错误信息:
 
select * from remote(default, system, query_log) where event_date = toDate(now()) and query like 'XXX'

 

二、TCP协议(9000端口)

  TCP协议最常使用的场景是ClickHouse自带的命令行工具进行交互分析时,常见端口号为9000。因为TCP协议里有链接定时探活报文,所以它不会出现socker层面的超时问题。只需关注distributed_ddl_task_timeout和max_execution_time参数的超时,设置方法和HTTP协议一致。

标签:execution,HTTP,处理,查询,default,timeout,超时,clickhouse
来源: https://www.cnblogs.com/MrYang-11-GetKnow/p/15976507.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有