aboutsummaryrefslogtreecommitdiff
path: root/weed/filer/postgres2/postgres2_store.go
diff options
context:
space:
mode:
authorLazyDBA247-Anyvision <yonin@anyvision.co>2021-02-15 07:45:09 +0200
committerLazyDBA247-Anyvision <yonin@anyvision.co>2021-02-15 07:45:09 +0200
commit7f458d5e78e380890771d925fee3df4f5f692e78 (patch)
tree27504329a544b84b097ebb97e7ed4886075d4cd6 /weed/filer/postgres2/postgres2_store.go
parent0bc3a1f9e88baca5f592d50ca028d169c86f0dc8 (diff)
downloadseaweedfs-7f458d5e78e380890771d925fee3df4f5f692e78.tar.xz
seaweedfs-7f458d5e78e380890771d925fee3df4f5f692e78.zip
better postgres connection pool management
adding SetConnMaxLifetime configuration (https://golang.org/pkg/database/sql/#DB.SetConnMaxLifetime) to enable refresh of stale connections.
Diffstat (limited to 'weed/filer/postgres2/postgres2_store.go')
-rw-r--r--weed/filer/postgres2/postgres2_store.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/weed/filer/postgres2/postgres2_store.go b/weed/filer/postgres2/postgres2_store.go
index 94c760401..44487fd0e 100644
--- a/weed/filer/postgres2/postgres2_store.go
+++ b/weed/filer/postgres2/postgres2_store.go
@@ -4,6 +4,7 @@ import (
"context"
"database/sql"
"fmt"
+ "time"
"github.com/chrislusf/seaweedfs/weed/filer"
"github.com/chrislusf/seaweedfs/weed/filer/abstract_sql"
@@ -40,10 +41,11 @@ func (store *PostgresStore2) Initialize(configuration util.Configuration, prefix
configuration.GetString(prefix+"sslmode"),
configuration.GetInt(prefix+"connection_max_idle"),
configuration.GetInt(prefix+"connection_max_open"),
+ configuration.GetInt(prefix+"connection_max_lifetime_seconds"),
)
}
-func (store *PostgresStore2) initialize(createTable, user, password, hostname string, port int, database, schema, sslmode string, maxIdle, maxOpen int) (err error) {
+func (store *PostgresStore2) initialize(createTable, user, password, hostname string, port int, database, schema, sslmode string, maxIdle, maxOpen, maxLifetimeSeconds int) (err error) {
store.SupportBucketTable = true
store.SqlGenerator = &postgres.SqlGenPostgres{
@@ -74,6 +76,7 @@ func (store *PostgresStore2) initialize(createTable, user, password, hostname st
store.DB.SetMaxIdleConns(maxIdle)
store.DB.SetMaxOpenConns(maxOpen)
+ store.DB.SetConnMaxLifetime(time.Duration(maxLifetimeSeconds) * time.Second)
if err = store.DB.Ping(); err != nil {
return fmt.Errorf("connect to %s error:%v", sqlUrl, err)