记录clickhouse 数据库连接超时问题处理
记录clickhouse 数据库连接超时问题处理
业务场景及问题描述
业务场景: 测试环境,clickhouse 大概有3个亿的数据。业务场景:综合报表,查询一周内的报表数据统计。需要绘制的图表有接近20个,采用ForkJoin 多线程处理。数据库连接:Hikari,默认最大数据库连接数为10,连接超时时间为10s。
问题描述: 在测试环境Clickhouse有其他业务需要使用的时候,打开综合报表页面,大概率会出现数据库连接超时情况,如下图所示:

问题分析
首先,默认最大数据库连接数为10,数量较小(主要),连接超时时间为10s,时长偏短(次要);
其次,采用ForkJoin多线程处理,一旦有多线程同时处理且单个线程处理时间过长时,就有可能会连接数超过10,且连接超时时间超过10s,就会抛出连接超时异常。
解决办法
- 修改最大数据库连接数,maximum-pool-size: 1000,根据环境配置以及业务需求修改成稍大的值。
- 修改连接超时时间,connection-timeout: 10000
增加最大数据库连接数就可以解决问题,连接超时时间不用修改也可以。
文章描述了在测试环境中,由于Clickhouse数据量大,业务查询复杂,导致数据库连接超时的问题。分析指出,连接数限制(10个)和超时时间(10s)设置不当,加上ForkJoin多线程处理的并发需求,是问题的主要原因。解决方案是增大最大数据库连接数至1000,并调整连接超时时间为10000ms。
3470

被折叠的 条评论
为什么被折叠?



