From 28d93b574d7018f1099ffc3b8a7ac137d532c4ca Mon Sep 17 00:00:00 2001 From: huydx Date: Fri, 10 Feb 2017 12:31:55 +0900 Subject: [PATCH 1/2] (feat) support max connection setting for database configuration --- conf/defaults.ini | 5 +++++ pkg/services/sqlstore/sqlstore.go | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/conf/defaults.ini b/conf/defaults.ini index 358847724ab..4606de9212e 100644 --- a/conf/defaults.ini +++ b/conf/defaults.ini @@ -73,6 +73,11 @@ password = # Example: mysql://user:secret@host:port/database url = +# Max conn setting default is 0 (mean not set) +max_conn = +max_idle_conn = +max_open_conn = + # For "postgres", use either "disable", "require" or "verify-full" # For "mysql", use either "true", "false", or "skip-verify". ssl_mode = disable diff --git a/pkg/services/sqlstore/sqlstore.go b/pkg/services/sqlstore/sqlstore.go index 5c44fe85f50..0d16d57bcde 100644 --- a/pkg/services/sqlstore/sqlstore.go +++ b/pkg/services/sqlstore/sqlstore.go @@ -29,6 +29,9 @@ type DatabaseConfig struct { ClientKeyPath string ClientCertPath string ServerCertName string + MaxConn int + MaxOpenConn int + MaxIdleConn int } var ( @@ -150,7 +153,15 @@ func getEngine() (*xorm.Engine, error) { } sqlog.Info("Initializing DB", "dbtype", DbCfg.Type) - return xorm.NewEngine(DbCfg.Type, cnnstr) + engine, err := xorm.NewEngine(DbCfg.Type, cnnstr) + if err != nil { + return nil, err + } else { + engine.SetMaxConns(DbCfg.MaxConn) + engine.SetMaxOpenConns(DbCfg.MaxOpenConn) + engine.SetMaxIdleConns(DbCfg.MaxIdleConn) + } + return engine, nil } func LoadConfig() { @@ -177,6 +188,9 @@ func LoadConfig() { DbCfg.Host = sec.Key("host").String() DbCfg.Name = sec.Key("name").String() DbCfg.User = sec.Key("user").String() + DbCfg.MaxConn = sec.Key("max_conn").MustInt(0) + DbCfg.MaxOpenConn = sec.Key("max_open_conn").MustInt(0) + DbCfg.MaxIdleConn = sec.Key("max_idle_conn").MustInt(0) if len(DbCfg.Pwd) == 0 { DbCfg.Pwd = sec.Key("password").String() } From 5b7b3fef647379e25de3fc10056082dbb0391886 Mon Sep 17 00:00:00 2001 From: bergquist Date: Fri, 10 Feb 2017 15:29:43 +0100 Subject: [PATCH 2/2] conf: adds sample values for db conn settings --- conf/sample.ini | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/conf/sample.ini b/conf/sample.ini index ce9344e1d4f..eaedfcc6f5e 100644 --- a/conf/sample.ini +++ b/conf/sample.ini @@ -82,6 +82,12 @@ # For "sqlite3" only, path relative to data_path setting ;path = grafana.db +# Max conn setting default is 0 (mean not set) +;max_conn = +;max_idle_conn = +;max_open_conn = + + #################################### Session #################################### [session] # Either "memory", "file", "redis", "mysql", "postgres", default is "file"