diff --git a/pool/pool.go b/pool/pool.go
index af2665ff..b74abf09 100644
--- a/pool/pool.go
+++ b/pool/pool.go
@@ -3,6 +3,7 @@ package pool
 import (
 	"context"
 	"fmt"
+	"runtime"
 	"strconv"
 	"time"
 
@@ -80,7 +81,7 @@ func ParseConfig(connString string) (*Config, error) {
 		return nil, err
 	}
 
-	config := &Config{ConnConfig: connConfig, MaxConns: defaultMaxConns}
+	config := &Config{ConnConfig: connConfig}
 
 	if s, ok := config.ConnConfig.Config.RuntimeParams["pool_max_conns"]; ok {
 		delete(connConfig.Config.RuntimeParams, "pool_max_conns")
@@ -89,6 +90,11 @@ func ParseConfig(connString string) (*Config, error) {
 			return nil, fmt.Errorf("invalid pool_max_conns: %v", err)
 		}
 		config.MaxConns = int32(n)
+	} else {
+		config.MaxConns = 4
+		if int32(runtime.NumCPU()) > config.MaxConns {
+			config.MaxConns = runtime.NumCPU()
+		}
 	}
 
 	return config, nil