From f1b4a007ab113f4b827ef0eba01868c935f0db50 Mon Sep 17 00:00:00 2001 From: Vladimir Barsukov Date: Sun, 19 Nov 2023 16:05:05 +0200 Subject: [PATCH] pool_max_conns --- zatomic/uint64.go | 31 +++++++++++++++++++++++++++++++ zdb/pool.go | 5 +++++ 2 files changed, 36 insertions(+) create mode 100644 zatomic/uint64.go diff --git a/zatomic/uint64.go b/zatomic/uint64.go new file mode 100644 index 0000000..dbfe811 --- /dev/null +++ b/zatomic/uint64.go @@ -0,0 +1,31 @@ +package zatomic + +import "sync/atomic" + +type UInt64 struct { + v *atomic.Uint64 +} + +func NewUInt64() *UInt64 { + return &UInt64{v: &atomic.Uint64{}} +} + +func (i *UInt64) Store(v int) { + i.v.Store(uint64(v)) +} + +func (i *UInt64) Add(delta int) uint64 { + return i.v.Add(uint64(delta)) +} + +func (i *UInt64) Inc() uint64 { + return i.Add(1) +} + +func (i *UInt64) Dec() uint64 { + return i.Add(-1) +} + +func (i *UInt64) Load() uint64 { + return i.v.Load() +} diff --git a/zdb/pool.go b/zdb/pool.go index 5b3b65d..596c9a4 100644 --- a/zdb/pool.go +++ b/zdb/pool.go @@ -6,6 +6,7 @@ import ( "github.com/jackc/pgx/v5/pgxpool" "log" "reflect" + "runtime" "strconv" "strings" "sync" @@ -154,6 +155,10 @@ func (d *Pool) newConn(mode connMode, pgConnString string) (q *Conn, err error) pgConnString += " sslmode=disable" } + if !strings.Contains(pgConnString, "pool_max_conns=") { + pgConnString += fmt.Sprintf(" pool_max_conns=%d", runtime.NumCPU()*2) + } + if pgxConfig, err = pgxpool.ParseConfig(pgConnString); err != nil { return nil, err } -- GitLab