Jelajahi Sumber

fasthttp: spread available db connections between worker processes in prefork mode

Aliaksandr Valialkin 10 tahun lalu
induk
melakukan
3d07ea6d0a
1 mengubah file dengan 7 tambahan dan 2 penghapusan
  1. 7 2
      frameworks/Go/fasthttp/src/hello/hello.go

+ 7 - 2
frameworks/Go/fasthttp/src/hello/hello.go

@@ -81,8 +81,13 @@ func main() {
 	if err = db.Ping(); err != nil {
 	if err = db.Ping(); err != nil {
 		log.Fatalf("Cannot connect to db: %s", err)
 		log.Fatalf("Cannot connect to db: %s", err)
 	}
 	}
-	db.SetMaxIdleConns(maxConnectionCount)
-	db.SetMaxOpenConns(maxConnectionCount * 2)
+
+	dbConnCount := maxConnectionCount
+	if *prefork {
+		dbConnCount = (dbConnCount + runtime.NumCPU()-1) / runtime.NumCPU()
+	}
+	db.SetMaxIdleConns(dbConnCount)
+	db.SetMaxOpenConns(dbConnCount * 2)
 
 
 	worldSelectStmt = mustPrepare(db, "SELECT id, randomNumber FROM World WHERE id = ?")
 	worldSelectStmt = mustPrepare(db, "SELECT id, randomNumber FROM World WHERE id = ?")
 	worldUpdateStmt = mustPrepare(db, "UPDATE World SET randomNumber = ? WHERE id = ?")
 	worldUpdateStmt = mustPrepare(db, "UPDATE World SET randomNumber = ? WHERE id = ?")