diff --git a/api/api.go b/api/api.go
index 32a28aa..d378de1 100644
--- a/api/api.go
+++ b/api/api.go
@@ -27,10 +27,16 @@
 )
 
 const (
-	configAPIListen   = "api_listen"
-	configExpVarPath  = "api_expvar_path"
-	configReadyPath   = "api_ready"
-	configHealthyPath = "api_healthy"
+	configAPIListen         = "api_listen"
+	configExpVarPath        = "api_expvar_path"
+	configReadyPath         = "api_ready"
+	configHealthyPath       = "api_healthy"
+	ConfigDBMaxConns        = "db_config_max_conns"
+	ConfigDBIdleConns       = "db_config_idle_conns"
+	ConfigDBConnsTimeout    = "db_config_conns_timeout_seconds"
+	dbDefaultMaxConnsLimit  = 1000
+	dbDefaultIdleConnsLimit = 1000
+	dbMaxConnTimeoutLimit   = 120
 )
 
 var log apid.LogService
@@ -45,6 +51,10 @@
 	config.SetDefault(configReadyPath, "/ready")
 	config.SetDefault(configHealthyPath, "/healthy")
 
+	config.SetDefault(ConfigDBMaxConns, dbDefaultMaxConnsLimit)
+	config.SetDefault(ConfigDBIdleConns, dbDefaultIdleConnsLimit)
+	config.SetDefault(ConfigDBConnsTimeout, dbMaxConnTimeoutLimit)
+
 	listen := config.GetString(configAPIListen)
 	h, p, err := net.SplitHostPort(listen)
 	if err != nil {
diff --git a/data/data.go b/data/data.go
index 61aabb9..c5b0925 100644
--- a/data/data.go
+++ b/data/data.go
@@ -18,11 +18,15 @@
 	"database/sql"
 	"fmt"
 	"github.com/30x/apid-core"
+	"github.com/30x/apid-core/api"
 	"github.com/30x/apid-core/data/wrap"
+	"github.com/30x/apid-core/logger"
+	"github.com/Sirupsen/logrus"
 	"github.com/mattn/go-sqlite3"
 	"os"
 	"path"
 	"runtime"
+	"strings"
 	"sync"
 	"time"
 )
@@ -171,10 +175,14 @@
 		log.Errorf("error enabling foreign_keys: %s", err)
 		return
 	}
-	dbLvl := config.GetString("log_level")
-	if dbLvl == "Debug" {
+	dbLvl := config.GetString(logger.ConfigLevel)
+	if strings.EqualFold(dbLvl, logrus.DebugLevel.String()) {
 		go printDBStatsInfo(db, versionedID)
 	}
+
+	db.SetMaxOpenConns(config.GetInt(api.ConfigDBMaxConns))
+	db.SetMaxIdleConns(config.GetInt(api.ConfigDBIdleConns))
+	db.SetConnMaxLifetime(time.Duration(config.GetInt(api.ConfigDBConnsTimeout)) * time.Second)
 	dbMap[versionedID] = db
 	return
 }
diff --git a/logger/logger.go b/logger/logger.go
index 39f6e8b..7c16b17 100644
--- a/logger/logger.go
+++ b/logger/logger.go
@@ -24,7 +24,7 @@
 )
 
 const (
-	configLevel = "log_level"
+	ConfigLevel = "log_level"
 
 	defaultLevel = logrus.ErrorLevel
 
@@ -42,10 +42,10 @@
 func Base() apid.LogService {
 	if std == nil {
 		config = apid.Config()
-		config.SetDefault(configLevel, defaultLevel.String())
-		logLevel := config.GetString(configLevel)
+		config.SetDefault(ConfigLevel, defaultLevel.String())
+		logLevel := config.GetString(ConfigLevel)
 		fmt.Printf("Base log level: %s\n", logLevel)
-		std = NewLogger(configLevel, logLevel)
+		std = NewLogger(ConfigLevel, logLevel)
 	}
 	return std
 }
@@ -62,7 +62,7 @@
 // note: config module xx log level using config var: xx_log_level = "debug"
 func (l *logger) ForModule(name string) apid.LogService {
 
-	configKey := fmt.Sprintf("%s_%s", name, configLevel)
+	configKey := fmt.Sprintf("%s_%s", name, ConfigLevel)
 	log := NewLogger(configKey, config.GetString(configKey)).WithField(moduleField, name)
 	std.Debugf("created logger '%s' at level %s", name, log.(loggerPlus).Level())
 	return log
