This commit is contained in:
jxxghp
2025-06-08 19:41:46 +08:00
parent 81bc51c972
commit 19c3dad338
3 changed files with 10 additions and 81 deletions
+2 -2
View File
@@ -69,8 +69,8 @@ class ConfigModel(BaseModel):
DB_MAX_OVERFLOW: int = 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 模式,默认开启
DB_WAL_ENABLE: bool = False DB_WAL_ENABLE: bool = True
# 缓存类型,支持 cachetools 和 redis,默认使用 cachetools # 缓存类型,支持 cachetools 和 redis,默认使用 cachetools
CACHE_BACKEND_TYPE: str = "cachetools" CACHE_BACKEND_TYPE: str = "cachetools"
# 缓存连接字符串,仅外部缓存(如 Redis、Memcached)需要 # 缓存连接字符串,仅外部缓存(如 Redis、Memcached)需要
-63
View File
@@ -324,66 +324,3 @@ class MemoryHelper(metaclass=Singleton):
return f"{obj_type_name}(描述生成失败){e}" return f"{obj_type_name}(描述生成失败){e}"
except Exception as e: except Exception as e:
return f"未知对象(描述生成失败){e}" return f"未知对象(描述生成失败){e}"
def get_current_memory_info(self) -> dict:
"""
获取当前内存使用信息
:return: 内存使用信息字典
"""
try:
# 获取当前进程内存使用
current_memory = psutil.Process().memory_info().rss
# 获取对象统计
all_objects = muppy.get_objects()
sum1 = summary.summarize(all_objects)
memory_info = {
"current_memory_mb": round(current_memory / 1024 / 1024, 2),
"object_count": len(all_objects),
"top_objects": [],
"largest_objects": []
}
# 解析对象统计信息
formatted_lines = list(summary.format_(sum1))
for line in formatted_lines:
parts = line.split('|')
if len(parts) >= 3 and not line.startswith('=') and not line.startswith(' types'):
# 解析格式: "type_name | count | size"
type_name = parts[0].strip()
count_str = parts[1].strip()
size_str = parts[2].strip()
# 跳过表头和分隔线
if type_name and count_str.isdigit():
# 解析大小(可能包含单位)
size_mb = 0
if 'MB' in size_str:
size_mb = float(size_str.replace('MB', '').strip())
elif 'KB' in size_str:
size_mb = float(size_str.replace('KB', '').strip()) / 1024
elif 'B' in size_str:
size_mb = float(size_str.replace('B', '').strip()) / 1024 / 1024
memory_info["top_objects"].append({
"type": type_name,
"count": count_str,
"size_mb": round(size_mb, 2)
})
# 只取前10个有效对象
if len(memory_info["top_objects"]) >= 10:
break
# 获取最大对象信息
try:
memory_info["largest_objects"] = self._get_largest_objects(10)
except Exception as e:
logger.warning(f"获取大对象列表失败: {e}")
memory_info["largest_objects"] = []
return memory_info
except Exception as e:
logger.error(f"获取内存信息失败: {e}")
return {"error": str(e)}
+8 -16
View File
@@ -5,18 +5,8 @@
HOST=0.0.0.0 HOST=0.0.0.0
# 【*】超级管理员,设置后一但重启将固化到数据库中,修改将无效(初始化超级管理员密码仅会生成一次,请在日志中查看并自行登录系统修改) # 【*】超级管理员,设置后一但重启将固化到数据库中,修改将无效(初始化超级管理员密码仅会生成一次,请在日志中查看并自行登录系统修改)
SUPERUSER=admin SUPERUSER=admin
# 重启自动升级 release/dev/true/false # 开发调试模式,仅开发人员使用,打开后将停止后台服务
MOVIEPILOT_AUTO_UPDATE=release DEV=false
# 自动检查和更新站点资源包(索引、认证等)
AUTO_UPDATE_RESOURCE=true
# 网络代理服务器地址 http(s)://ip:port、socks5://user:pass@host:port、socks5h://user:pass@host:port
PROXY_HOST=
# 媒体识别来源 themoviedb/douban,使用themoviedb时需要确保能正常连接api.themoviedb.org,使用douban时不支持二级分类
RECOGNIZE_SOURCE=themoviedb
# OCR服务器地址
OCR_HOST=https://movie-pilot.org
# 搜索多个名称,true/false,为true时搜索时会同时搜索中英文及原始名称,搜索结果会更全面,但会增加搜索时间;为false时其中一个名称搜索到结果或全部名称搜索完毕即停止
SEARCH_MULTIPLE_NAME=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压力 # 数据库连接池的大小,可适当降低如20-50以减少I/O压力
@@ -25,7 +15,9 @@ DB_POOL_SIZE=100
DB_MAX_OVERFLOW=500 DB_MAX_OVERFLOW=500
# SQLite 的 busy_timeout 参数,可适当增加如180以减少锁定错误 # SQLite 的 busy_timeout 参数,可适当增加如180以减少锁定错误
DB_TIMEOUT=60 DB_TIMEOUT=60
# 是否开发调试模式,仅开发人员使用,打开后将停止后台服务 # 是否启用内存监控,开启后将定期生成内存快照文件
DEV=false MEMORY_ANALYSIS=false
API_TOKEN='jYImOhUt6p4acOeMpNgDhA' # 内存快照间隔(分钟)
ANIME_GENREIDS='[16]' MEMORY_SNAPSHOT_INTERVAL=5
# 保留的内存快照文件数量
MEMORY_SNAPSHOT_KEEP_COUNT=30