1. 问题现象
在对项目中的clickhouse数据库进行查询的时候,提示:Too many simultaneous queries,如下图:

2. 问题原因
根据以往数据库的使用经验,确定应该是当前正在执行的查询数过多,超过了数据库的最大限制。于是验证了一下:
-
检查clickhouse设置的最大查询数:
查看clickhouse的配置文件config.xml,其中的选项max_concurrent_queries,如下图:

-
确认当前实际在运行的查询数量:
select count(*) from system.processes

注意:此设置中的查询数包含了插入和查询请求。
3. 解决办法
出现这种情况,最直接的做法当然是修改配置,调大max_concurent_queries的参数值,但也要分析具体原因,比如我遇到的这种情况,300的配置其实已经比较大了,但是依然不够,这是不太正常的,查看system.processes的具体内容后,发现有大量的insert请求阻塞在那儿,因此可以确定即使我调大了该配置,很快还是会出现问题。对症下药应该是解决insert不能马上结束的问题,通过一番排查解决了该问题后,便没有再出现上述问题。
max_concurrent_queries的配置可以在系统运行时修改,无需重启服务,已经执行的查询不受影响。当该值设为0时,表示没有限制。
4. 知识拓展
4.2 如何终止当前正在执行的查询?
- 通过查看
system.processes,获取到要终止的查询IDquery_id
- 执行kill命令进行终止:
kill query where query_id='xxx'

本文介绍了在使用ClickHouse数据库时遇到TooManySimultaneousQueries错误的原因及解决方法。问题源于当前查询数超过最大限制(max_concurrent_queries)。检查配置发现大量insert请求阻塞,解决方案不仅包括调整配置,更关键的是深入分析并解决导致insert请求阻塞的问题。此外,还分享了如何在运行时动态修改max_concurrent_queries以及如何终止当前查询的操作步骤。
1万+





