fix db pool size

This commit is contained in:
jxxghp
2025-06-27 12:41:03 +08:00
parent 23c9862eb3
commit 978819be38
3 changed files with 18 additions and 20 deletions
+15 -11
View File
@@ -37,6 +37,10 @@ class SystemConfModel(BaseModel):
scheduler: int = 0 scheduler: int = 0
# 线程池大小 # 线程池大小
threadpool: int = 0 threadpool: int = 0
# 数据库连接池大小
dbpool: int = 0
# 数据库连接池溢出数量
dbpooloverflow: int = 0
class ConfigModel(BaseModel): class ConfigModel(BaseModel):
@@ -83,14 +87,10 @@ class ConfigModel(BaseModel):
DB_POOL_TYPE: str = "QueuePool" DB_POOL_TYPE: str = "QueuePool"
# 是否在获取连接时进行预先 ping 操作,默认关闭 # 是否在获取连接时进行预先 ping 操作,默认关闭
DB_POOL_PRE_PING: bool = False DB_POOL_PRE_PING: bool = False
# 数据库连接池的大小,默认 100 # 数据库连接的回收时间(秒)
DB_POOL_SIZE: int = 100 DB_POOL_RECYCLE: int = 300
# 数据库连接的回收时间(秒),默认 1800 秒 # 数据库连接池获取连接的超时时间(秒)
DB_POOL_RECYCLE: int = 1800 DB_POOL_TIMEOUT: int = 30
# 数据库连接池获取连接的超时时间(秒),默认 60 秒
DB_POOL_TIMEOUT: int = 60
# 数据库连接池最大溢出连接数,默认 500
DB_MAX_OVERFLOW: int = 500
# SQLite 的 busy_timeout 参数,默认为 60 秒 # SQLite 的 busy_timeout 参数,默认为 60 秒
DB_TIMEOUT: int = 60 DB_TIMEOUT: int = 60
# SQLite 是否启用 WAL 模式,默认开启 # SQLite 是否启用 WAL 模式,默认开启
@@ -277,7 +277,7 @@ class ConfigModel(BaseModel):
# 是否启用内存监控 # 是否启用内存监控
MEMORY_ANALYSIS: bool = False MEMORY_ANALYSIS: bool = False
# 内存快照间隔(分钟) # 内存快照间隔(分钟)
MEMORY_SNAPSHOT_INTERVAL: int = 60 MEMORY_SNAPSHOT_INTERVAL: int = 30
# 保留的内存快照文件数量 # 保留的内存快照文件数量
MEMORY_SNAPSHOT_KEEP_COUNT: int = 20 MEMORY_SNAPSHOT_KEEP_COUNT: int = 20
# 全局图片缓存,将媒体图片缓存到本地 # 全局图片缓存,将媒体图片缓存到本地
@@ -563,7 +563,9 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel):
fanart=512, fanart=512,
meta=(self.META_CACHE_EXPIRE or 24) * 3600, meta=(self.META_CACHE_EXPIRE or 24) * 3600,
scheduler=100, scheduler=100,
threadpool=100 threadpool=100,
dbpool=100,
dbpooloverflow=50
) )
return SystemConfModel( return SystemConfModel(
torrents=100, torrents=100,
@@ -574,7 +576,9 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel):
fanart=128, fanart=128,
meta=(self.META_CACHE_EXPIRE or 2) * 3600, meta=(self.META_CACHE_EXPIRE or 2) * 3600,
scheduler=50, scheduler=50,
threadpool=50 threadpool=50,
dbpool=50,
dbpooloverflow=20
) )
@property @property
+2 -2
View File
@@ -24,9 +24,9 @@ db_kwargs = {
# 当使用 QueuePool 时,添加 QueuePool 特有的参数 # 当使用 QueuePool 时,添加 QueuePool 特有的参数
if pool_class == QueuePool: if pool_class == QueuePool:
db_kwargs.update({ db_kwargs.update({
"pool_size": settings.DB_POOL_SIZE, "pool_size": settings.CONF.dbpool,
"pool_timeout": settings.DB_POOL_TIMEOUT, "pool_timeout": settings.DB_POOL_TIMEOUT,
"max_overflow": settings.DB_MAX_OVERFLOW "max_overflow": settings.CONF.dbpooloverflow
}) })
# 创建数据库引擎 # 创建数据库引擎
Engine = create_engine(**db_kwargs) Engine = create_engine(**db_kwargs)
+1 -7
View File
@@ -9,15 +9,9 @@ SUPERUSER=admin
DEV=false DEV=false
# 为指定字幕添加.default后缀设置为默认字幕,支持为'zh-cn''zh-tw''eng'添加默认字幕,未定义或设置为None则不添加 # 为指定字幕添加.default后缀设置为默认字幕,支持为'zh-cn''zh-tw''eng'添加默认字幕,未定义或设置为None则不添加
DEFAULT_SUB=zh-cn DEFAULT_SUB=zh-cn
# 数据库连接池的大小,可适当降低如20-50以减少I/O压力
DB_POOL_SIZE=100
# 数据库连接池最大溢出连接数,可适当降低如0以减少I/O压力
DB_MAX_OVERFLOW=500
# SQLite 的 busy_timeout 参数,可适当增加如180以减少锁定错误
DB_TIMEOUT=60
# 是否启用内存监控,开启后将定期生成内存快照文件 # 是否启用内存监控,开启后将定期生成内存快照文件
MEMORY_ANALYSIS=false MEMORY_ANALYSIS=false
# 内存快照间隔(分钟) # 内存快照间隔(分钟)
MEMORY_SNAPSHOT_INTERVAL=60 MEMORY_SNAPSHOT_INTERVAL=30
# 保留的内存快照文件数量 # 保留的内存快照文件数量
MEMORY_SNAPSHOT_KEEP_COUNT=20 MEMORY_SNAPSHOT_KEEP_COUNT=20