From 865ce06b95025300fde056f3b56072240e5528c1 Mon Sep 17 00:00:00 2001 From: David Dworken Date: Sat, 26 Nov 2022 18:33:54 -0800 Subject: [PATCH] Optimize healthcheck handler to avoid unnecessary ping in prod + add prod-only config for connection reuse --- backend/server/server.go | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/backend/server/server.go b/backend/server/server.go index e566eb7..f490daa 100644 --- a/backend/server/server.go +++ b/backend/server/server.go @@ -390,14 +390,6 @@ func addDeletionRequestHandler(ctx context.Context, w http.ResponseWriter, r *ht } func healthCheckHandler(ctx context.Context, w http.ResponseWriter, r *http.Request) { - db, err := GLOBAL_DB.DB() - if err != nil { - panic(fmt.Sprintf("failed to get DB: %v", err)) - } - err = db.Ping() - if err != nil { - panic(fmt.Sprintf("failed to ping DB: %v", err)) - } if isProductionEnvironment() { // Check that we have a reasonable looking set of devices/entries in the DB rows, err := GLOBAL_DB.Raw("SELECT true FROM enc_history_entries LIMIT 1 OFFSET 1000").Rows() @@ -422,6 +414,15 @@ func healthCheckHandler(ctx context.Context, w http.ResponseWriter, r *http.Requ EncryptedId: "healthcheck_enc_id", ReadCount: 10000, })) + } else { + db, err := GLOBAL_DB.DB() + if err != nil { + panic(fmt.Sprintf("failed to get DB: %v", err)) + } + err = db.Ping() + if err != nil { + panic(fmt.Sprintf("failed to ping DB: %v", err)) + } } ok := "OK" w.Write([]byte(ok)) @@ -629,6 +630,11 @@ func InitDB() { if err != nil { panic(err) } + if isProductionEnvironment() { + tx.SetMaxIdleConns(10) + tx.SetMaxOpenConns(100) + tx.SetConnMaxLifetime(time.Minute * 30) + } } func decrementVersion(version string) (string, error) {