diff --git a/app/core/config.py b/app/core/config.py index 25467567..1a8cd160 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -37,6 +37,10 @@ class SystemConfModel(BaseModel): scheduler: int = 0 # 线程池大小 threadpool: int = 0 + # 数据库连接池大小 + dbpool: int = 0 + # 数据库连接池溢出数量 + dbpooloverflow: int = 0 class ConfigModel(BaseModel): @@ -83,14 +87,10 @@ class ConfigModel(BaseModel): DB_POOL_TYPE: str = "QueuePool" # 是否在获取连接时进行预先 ping 操作,默认关闭 DB_POOL_PRE_PING: bool = False - # 数据库连接池的大小,默认 100 - DB_POOL_SIZE: int = 100 - # 数据库连接的回收时间(秒),默认 1800 秒 - DB_POOL_RECYCLE: int = 1800 - # 数据库连接池获取连接的超时时间(秒),默认 60 秒 - DB_POOL_TIMEOUT: int = 60 - # 数据库连接池最大溢出连接数,默认 500 - DB_MAX_OVERFLOW: int = 500 + # 数据库连接的回收时间(秒) + DB_POOL_RECYCLE: int = 300 + # 数据库连接池获取连接的超时时间(秒) + DB_POOL_TIMEOUT: int = 30 # SQLite 的 busy_timeout 参数,默认为 60 秒 DB_TIMEOUT: int = 60 # SQLite 是否启用 WAL 模式,默认开启 @@ -277,7 +277,7 @@ class ConfigModel(BaseModel): # 是否启用内存监控 MEMORY_ANALYSIS: bool = False # 内存快照间隔(分钟) - MEMORY_SNAPSHOT_INTERVAL: int = 60 + MEMORY_SNAPSHOT_INTERVAL: int = 30 # 保留的内存快照文件数量 MEMORY_SNAPSHOT_KEEP_COUNT: int = 20 # 全局图片缓存,将媒体图片缓存到本地 @@ -563,7 +563,9 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel): fanart=512, meta=(self.META_CACHE_EXPIRE or 24) * 3600, scheduler=100, - threadpool=100 + threadpool=100, + dbpool=100, + dbpooloverflow=50 ) return SystemConfModel( torrents=100, @@ -574,7 +576,9 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel): fanart=128, meta=(self.META_CACHE_EXPIRE or 2) * 3600, scheduler=50, - threadpool=50 + threadpool=50, + dbpool=50, + dbpooloverflow=20 ) @property diff --git a/app/db/__init__.py b/app/db/__init__.py index 4fe29d0c..c7e473fe 100644 --- a/app/db/__init__.py +++ b/app/db/__init__.py @@ -24,9 +24,9 @@ db_kwargs = { # 当使用 QueuePool 时,添加 QueuePool 特有的参数 if pool_class == QueuePool: db_kwargs.update({ - "pool_size": settings.DB_POOL_SIZE, + "pool_size": settings.CONF.dbpool, "pool_timeout": settings.DB_POOL_TIMEOUT, - "max_overflow": settings.DB_MAX_OVERFLOW + "max_overflow": settings.CONF.dbpooloverflow }) # 创建数据库引擎 Engine = create_engine(**db_kwargs) diff --git a/config/app.env b/config/app.env index 23bf6210..f68ad909 100644 --- a/config/app.env +++ b/config/app.env @@ -9,15 +9,9 @@ SUPERUSER=admin DEV=false # 为指定字幕添加.default后缀设置为默认字幕,支持为'zh-cn','zh-tw','eng'添加默认字幕,未定义或设置为None则不添加 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_SNAPSHOT_INTERVAL=60 +MEMORY_SNAPSHOT_INTERVAL=30 # 保留的内存快照文件数量 MEMORY_SNAPSHOT_KEEP_COUNT=20 \ No newline at end of file