在golang代码中使用clickhouse-go
出现问题:clickhouse: acquire conn timeout. you can increase the number of max open conn or the dial timeout
可能原因是 某个时间节点的 连接数 超过默认最大值,当代码没有设置时,默认是10。
解决方法:
- 先查看max_connections参数值上限是多大,我这里上限是4096
- 配置代码中的 MaxOpenConns 连接数
import (
"github.com/ClickHouse/clickhouse-go/v2"
"github.com/zeromicro/go-zero/core/logx"
"context"
)
func InitClickHouse(c config.ClickHouseConfig) clickhouse.Conn {
CHConn, errs := clickhouse.Open(&clickhouse.Options{
Addr: []string{c.Host},
Auth: clickhouse.Auth{
Database: c.DataBase,
Username: c.UserName,
Password: c.PassWord,
},
Compression: &clickhouse.Compression{
Method: clickhouse.CompressionLZ4,
},
Settings: clickhouse.Settings{
"max_execution_time": 600,
},
MaxOpenConns:2000, // 设置连接池的最大连接数
//Debug: true,
})
if errs != nil {
logx.Error("clickhouse:errs:", errs.Error())
}
if err := CHConn.Ping(context.Background()); err != nil {
logx.Error("Ping clickhouse:error:", err.Error())
}
return CHConn
}