Skip to content

Commit c1d7411

Browse files
Merge pull request #34 from RiemaLabs/perf/cha-11
perf db connect poll
2 parents d291f61 + 2ade641 commit c1d7411

File tree

2 files changed

+29
-10
lines changed

2 files changed

+29
-10
lines changed

config/config.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,18 @@ type Contract struct {
4141

4242
// Database
4343
type Database struct {
44-
Path string `yaml:"path,omitempty"`
45-
Kind string `yaml:"kind" validate:"required,oneof=sqlite postgres mysql clickhouse elasticsearch"`
46-
Host string `yaml:"host" validate:"required_with=Port User Database"`
47-
Port int `yaml:"port" validate:"required_with=Host User Database,gt=-1,lt=65535"`
48-
User string `yaml:"user" validate:"required_with=Host Port Database"`
49-
Password string `yaml:"password"`
50-
Database string `yaml:"database" validate:"required_with=Host Port User"`
51-
SchemaName string `yaml:"schema_name"`
52-
ApplicationName string `yaml:"application_name"`
44+
Path string `yaml:"path,omitempty"`
45+
Kind string `yaml:"kind" validate:"required,oneof=sqlite postgres mysql clickhouse elasticsearch"`
46+
Host string `yaml:"host" validate:"required_with=Port User Database"`
47+
Port int `yaml:"port" validate:"required_with=Host User Database,gt=-1,lt=65535"`
48+
User string `yaml:"user" validate:"required_with=Host Port Database"`
49+
Password string `yaml:"password"`
50+
Database string `yaml:"database" validate:"required_with=Host Port User"`
51+
SchemaName string `yaml:"schema_name"`
52+
ApplicationName string `yaml:"application_name"`
53+
MaxOpenConnections int `yaml:"max_open_connections"`
54+
MaxIdleConnections int `yaml:"max_idle_connections"`
55+
MaxLifetimeConnections int `yaml:"max_lifetime_connections"`
5356
}
5457

5558
// Hasura -

database/bun.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"net/url"
88
"runtime"
9+
"time"
910

1011
"github.com/dipdup-net/go-lib/config"
1112
"github.com/pkg/errors"
@@ -69,8 +70,23 @@ func (db *Bun) Connect(ctx context.Context, cfg config.Database) error {
6970
db.conn = bun.NewDB(db.sqldb, pgdialect.New())
7071
}
7172
maxOpenConns := 4 * runtime.GOMAXPROCS(0)
73+
maxIdleConns := maxOpenConns
74+
maxLifetime := time.Minute
75+
if cfg.MaxOpenConnections > 0 {
76+
maxOpenConns = cfg.MaxOpenConnections
77+
}
78+
79+
if cfg.MaxIdleConnections > 0 {
80+
maxIdleConns = cfg.MaxIdleConnections
81+
}
82+
83+
if cfg.MaxLifetimeConnections > 0 {
84+
maxLifetime = time.Duration(cfg.MaxLifetimeConnections) * time.Second
85+
}
86+
7287
db.sqldb.SetMaxOpenConns(maxOpenConns)
73-
db.sqldb.SetMaxIdleConns(maxOpenConns)
88+
db.sqldb.SetMaxIdleConns(maxIdleConns)
89+
db.sqldb.SetConnMaxLifetime(maxLifetime)
7490
return nil
7591
}
7692

0 commit comments

Comments
 (0)