mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-23 15:03:51 +08:00
- 测试连接改为隔离连接,成功后立即关闭并避免写入全局缓存 - 新增通用 SQL 连接池配置,限制网络型数据源空闲连接长期占用 - Redis 测试连接改为临时客户端并立即释放 - MySQL 连接数超限时释放同实例缓存连接并重试 - 补充连接释放、缓存重试和连接池参数回归测试
28 lines
542 B
Go
28 lines
542 B
Go
package db
|
|
|
|
import (
|
|
"database/sql"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
defaultSQLMaxOpenConns = 4
|
|
defaultSQLConnMaxLifetime = 30 * time.Minute
|
|
defaultSQLConnMaxIdleTime = 30 * time.Second
|
|
)
|
|
|
|
func configureSQLConnectionPool(db *sql.DB, dbType string) {
|
|
if db == nil {
|
|
return
|
|
}
|
|
switch strings.ToLower(strings.TrimSpace(dbType)) {
|
|
case "sqlite", "duckdb":
|
|
return
|
|
}
|
|
db.SetMaxOpenConns(defaultSQLMaxOpenConns)
|
|
db.SetMaxIdleConns(0)
|
|
db.SetConnMaxIdleTime(defaultSQLConnMaxIdleTime)
|
|
db.SetConnMaxLifetime(defaultSQLConnMaxLifetime)
|
|
}
|