Skip to content

Commit

Permalink
Merge pull request #34 from RiemaLabs/perf/cha-11
Browse files Browse the repository at this point in the history
perf db connect poll
  • Loading branch information
aopoltorzhicky committed Jul 19, 2024
2 parents d291f61 + 2ade641 commit c1d7411
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 10 deletions.
21 changes: 12 additions & 9 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,18 @@ type Contract struct {

// Database
type Database struct {
Path string `yaml:"path,omitempty"`
Kind string `yaml:"kind" validate:"required,oneof=sqlite postgres mysql clickhouse elasticsearch"`
Host string `yaml:"host" validate:"required_with=Port User Database"`
Port int `yaml:"port" validate:"required_with=Host User Database,gt=-1,lt=65535"`
User string `yaml:"user" validate:"required_with=Host Port Database"`
Password string `yaml:"password"`
Database string `yaml:"database" validate:"required_with=Host Port User"`
SchemaName string `yaml:"schema_name"`
ApplicationName string `yaml:"application_name"`
Path string `yaml:"path,omitempty"`
Kind string `yaml:"kind" validate:"required,oneof=sqlite postgres mysql clickhouse elasticsearch"`
Host string `yaml:"host" validate:"required_with=Port User Database"`
Port int `yaml:"port" validate:"required_with=Host User Database,gt=-1,lt=65535"`
User string `yaml:"user" validate:"required_with=Host Port Database"`
Password string `yaml:"password"`
Database string `yaml:"database" validate:"required_with=Host Port User"`
SchemaName string `yaml:"schema_name"`
ApplicationName string `yaml:"application_name"`
MaxOpenConnections int `yaml:"max_open_connections"`
MaxIdleConnections int `yaml:"max_idle_connections"`
MaxLifetimeConnections int `yaml:"max_lifetime_connections"`
}

// Hasura -
Expand Down
18 changes: 17 additions & 1 deletion database/bun.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"fmt"
"net/url"
"runtime"
"time"

"github.com/dipdup-net/go-lib/config"
"github.com/pkg/errors"
Expand Down Expand Up @@ -69,8 +70,23 @@ func (db *Bun) Connect(ctx context.Context, cfg config.Database) error {
db.conn = bun.NewDB(db.sqldb, pgdialect.New())
}
maxOpenConns := 4 * runtime.GOMAXPROCS(0)
maxIdleConns := maxOpenConns
maxLifetime := time.Minute
if cfg.MaxOpenConnections > 0 {
maxOpenConns = cfg.MaxOpenConnections
}

if cfg.MaxIdleConnections > 0 {
maxIdleConns = cfg.MaxIdleConnections
}

if cfg.MaxLifetimeConnections > 0 {
maxLifetime = time.Duration(cfg.MaxLifetimeConnections) * time.Second
}

db.sqldb.SetMaxOpenConns(maxOpenConns)
db.sqldb.SetMaxIdleConns(maxOpenConns)
db.sqldb.SetMaxIdleConns(maxIdleConns)
db.sqldb.SetConnMaxLifetime(maxLifetime)
return nil
}

Expand Down

0 comments on commit c1d7411

Please sign in to comment.