From 01c90fc5b1fc64f9ab2471fea9518bca00b47284 Mon Sep 17 00:00:00 2001 From: Aris Tzoumas Date: Thu, 7 Dec 2023 13:34:14 +0200 Subject: [PATCH] chore: tune shared db connection pooling (#4213) --- app/apphandlers/setup.go | 3 ++- internal/drain-config/drainConfig.go | 2 ++ services/rsources/rsources.go | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/apphandlers/setup.go b/app/apphandlers/setup.go index 495db85131..fe4b42ec17 100644 --- a/app/apphandlers/setup.go +++ b/app/apphandlers/setup.go @@ -59,7 +59,8 @@ func rudderCoreWorkSpaceTableSetup() error { // NewRsourcesService produces a rsources.JobService through environment configuration (env variables & config file) func NewRsourcesService(deploymentType deployment.Type) (rsources.JobService, error) { var rsourcesConfig rsources.JobServiceConfig - rsourcesConfig.MaxPoolSize = config.GetInt("Rsources.PoolSize", 5) + rsourcesConfig.MaxPoolSize = config.GetInt("Rsources.MaxPoolSize", 3) + rsourcesConfig.MinPoolSize = config.GetInt("Rsources.MinPoolSize", 1) rsourcesConfig.LocalConn = misc.GetConnectionString(config.Default) rsourcesConfig.LocalHostname = config.GetString("DB.host", "localhost") rsourcesConfig.SharedConn = config.GetString("SharedDB.dsn", "") diff --git a/internal/drain-config/drainConfig.go b/internal/drain-config/drainConfig.go index 7c78640d1a..1bac07830b 100644 --- a/internal/drain-config/drainConfig.go +++ b/internal/drain-config/drainConfig.go @@ -192,5 +192,7 @@ func setupDBConn(conf *config.Config) (*sql.DB, error) { if err := db.Ping(); err != nil { return nil, fmt.Errorf("db ping: %v", err) } + db.SetMaxIdleConns(conf.GetInt("drainConfig.maxIdleConns", 1)) + db.SetMaxOpenConns(conf.GetInt("drainConfig.maxOpenConns", 2)) return db, nil } diff --git a/services/rsources/rsources.go b/services/rsources/rsources.go index 0b0d35f024..af815f94c7 100644 --- a/services/rsources/rsources.go +++ b/services/rsources/rsources.go @@ -153,6 +153,7 @@ type JobServiceConfig struct { LocalHostname string LocalConn string MaxPoolSize int + MinPoolSize int SharedConn string SubscriptionTargetConn string SkipFailedRecordsCollection bool @@ -202,6 +203,9 @@ func NewJobService(config JobServiceConfig) (JobService, error) { if config.MaxPoolSize <= 2 { config.MaxPoolSize = 2 // minimum 2 connections in the pool for proper startup } + if config.MinPoolSize <= 0 { + config.MinPoolSize = 1 + } var ( localDB, sharedDB *sql.DB err error @@ -219,6 +223,7 @@ func NewJobService(config JobServiceConfig) (JobService, error) { return nil, fmt.Errorf("failed to create shared postgresql connection pool: %w", err) } sharedDB.SetMaxOpenConns(config.MaxPoolSize) + sharedDB.SetMaxIdleConns(config.MinPoolSize) } handler := &sourcesHandler{ log: config.Log,