diff --git a/configs/config.go b/configs/config.go index c812c87..db44bdb 100644 --- a/configs/config.go +++ b/configs/config.go @@ -82,6 +82,7 @@ type ClickhouseConfig struct { AsyncInsert bool `mapstructure:"asyncInsert"` MaxRowsPerInsert int `mapstructure:"maxRowsPerInsert"` ChainBasedConfig map[string]TableOverrideConfig `mapstructure:"chainBasedConfig"` + MaxOpenConns int `mapstructure:"maxOpenConns"` } type MemoryConfig struct { diff --git a/internal/storage/clickhouse.go b/internal/storage/clickhouse.go index a96a3f7..e415482 100644 --- a/internal/storage/clickhouse.go +++ b/internal/storage/clickhouse.go @@ -82,7 +82,7 @@ func connectDB(cfg *config.ClickhouseConfig) (clickhouse.Conn, error) { return nil, fmt.Errorf("invalid CLICKHOUSE_PORT: %d", port) } - conn, err := clickhouse.Open(&clickhouse.Options{ + options := &clickhouse.Options{ Addr: []string{fmt.Sprintf("%s:%d", cfg.Host, port)}, Protocol: clickhouse.Native, TLS: func() *tls.Config { @@ -107,7 +107,12 @@ func connectDB(cfg *config.ClickhouseConfig) (clickhouse.Conn, error) { } return settings }(), - }) + } + if cfg.MaxOpenConns > 0 { + options.MaxOpenConns = cfg.MaxOpenConns + } + + conn, err := clickhouse.Open(options) if err != nil { return nil, err }