perf(db): tune sqlite pool and add maintenance scheduler
This commit is contained in:
@@ -126,6 +126,17 @@ class Config:
|
||||
# ==================== 数据库配置 ====================
|
||||
DB_FILE = os.environ.get("DB_FILE", "data/app_data.db")
|
||||
DB_POOL_SIZE = int(os.environ.get("DB_POOL_SIZE", "5"))
|
||||
DB_CONNECT_TIMEOUT_SECONDS = int(os.environ.get("DB_CONNECT_TIMEOUT_SECONDS", "10"))
|
||||
DB_BUSY_TIMEOUT_MS = int(os.environ.get("DB_BUSY_TIMEOUT_MS", "10000"))
|
||||
DB_CACHE_SIZE_KB = int(os.environ.get("DB_CACHE_SIZE_KB", "8192"))
|
||||
DB_WAL_AUTOCHECKPOINT_PAGES = int(os.environ.get("DB_WAL_AUTOCHECKPOINT_PAGES", "1000"))
|
||||
DB_MMAP_SIZE_MB = int(os.environ.get("DB_MMAP_SIZE_MB", "256"))
|
||||
DB_LOCK_RETRY_COUNT = int(os.environ.get("DB_LOCK_RETRY_COUNT", "3"))
|
||||
DB_LOCK_RETRY_BASE_MS = int(os.environ.get("DB_LOCK_RETRY_BASE_MS", "50"))
|
||||
DB_PRAGMA_OPTIMIZE_INTERVAL_SECONDS = int(os.environ.get("DB_PRAGMA_OPTIMIZE_INTERVAL_SECONDS", "21600"))
|
||||
DB_ANALYZE_INTERVAL_SECONDS = int(os.environ.get("DB_ANALYZE_INTERVAL_SECONDS", "86400"))
|
||||
DB_WAL_CHECKPOINT_INTERVAL_SECONDS = int(os.environ.get("DB_WAL_CHECKPOINT_INTERVAL_SECONDS", "43200"))
|
||||
DB_WAL_CHECKPOINT_MODE = os.environ.get("DB_WAL_CHECKPOINT_MODE", "PASSIVE")
|
||||
|
||||
# ==================== 浏览器配置 ====================
|
||||
SCREENSHOTS_DIR = os.environ.get("SCREENSHOTS_DIR", "截图")
|
||||
@@ -249,6 +260,20 @@ class Config:
|
||||
|
||||
if cls.DB_POOL_SIZE < 1:
|
||||
errors.append("DB_POOL_SIZE必须大于0")
|
||||
if cls.DB_CONNECT_TIMEOUT_SECONDS < 1:
|
||||
errors.append("DB_CONNECT_TIMEOUT_SECONDS必须大于0")
|
||||
if cls.DB_BUSY_TIMEOUT_MS < 100:
|
||||
errors.append("DB_BUSY_TIMEOUT_MS必须至少100毫秒")
|
||||
if cls.DB_CACHE_SIZE_KB < 1024:
|
||||
errors.append("DB_CACHE_SIZE_KB建议至少1024")
|
||||
if cls.DB_WAL_AUTOCHECKPOINT_PAGES < 100:
|
||||
errors.append("DB_WAL_AUTOCHECKPOINT_PAGES建议至少100")
|
||||
if cls.DB_MMAP_SIZE_MB < 0:
|
||||
errors.append("DB_MMAP_SIZE_MB不能为负数")
|
||||
if cls.DB_LOCK_RETRY_COUNT < 0:
|
||||
errors.append("DB_LOCK_RETRY_COUNT不能为负数")
|
||||
if cls.DB_LOCK_RETRY_BASE_MS < 10:
|
||||
errors.append("DB_LOCK_RETRY_BASE_MS建议至少10毫秒")
|
||||
|
||||
# 验证日志配置
|
||||
if cls.LOG_LEVEL not in ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]:
|
||||
|
||||
Reference in New Issue
Block a user