记录clickhouse 数据库连接超时问题处理
记录clickhouse 数据库连接超时问题处理
业务场景及问题描述
业务场景: 测试环境,clickhouse 大概有3个亿的数据。业务场景:综合报表,查询一周内的报表数据统计。需要绘制的图表有接近20个,采用ForkJoin 多线程处理。数据库连接:Hikari,默认最大数据库连接数为10,连接超时时间为10s。
问题描述: 在测试环境Clickhouse有其他业务需要使用的时候,打开综合报表页面,大概率会出现数据库连接超时情况,如下图所示:
问题分析
首先,默认最大数据库连接数为10,数量较小(主要),连接超时时间为10s,时长偏短(次要);
其次,采用ForkJoin多线程处理,一旦有多线程同时处理且单个线程处理时间过长时,就有可能会连接数超过10,且连接超时时间超过10s,就会抛出连接超时异常。
解决办法
- 修改最大数据库连接数,maximum-pool-size: 1000,根据环境配置以及业务需求修改成稍大的值。
- 修改连接超时时间,connection-timeout: 10000
增加最大数据库连接数就可以解决问题,连接超时时间不用修改也可以。