PID 4176527 · RSS 862 MB · 运行 3 天 · bladeai 服务器 · 2026-06-16
最大的单一消耗。Mem0 通过 HuggingFace 加载本地 embedding 模型,权重常驻不释放。
优化建议:如果 memory 功能使用频率低,改用远程 embedding API 可省 300M
多个全局 dict 只增不减,进程运行越久泄漏越多。
| 位置 | 类型 | 问题 |
|---|---|---|
| server/deps.py:61 | _background_sessions dict[str, Task] |
Task 持有完整 session 状态,finally 可能未执行 |
| routes/prod_workspaces.py:72 | _workspace_user_token_cache dict[tuple, str] |
无 TTL、无 maxsize、无 eviction |
| socketio_handlers.py:296 | _gis_analysis_session_locks dict[str, Lock] |
Lock 创建后从不删除 |
| sessions/payload_log_store.py:58 | _queues + _workers dict[str, Queue/Task] |
session 结束后不清理 |
优化建议:加 TTL/LRU、session 断开时主动清理对应 key
每个 session 把完整对话历史加载到内存中,多个活跃 session 同时存在时开销很大。
线上当前有多个 blade-user 容器活跃,每个对应一个 session。
优化建议:改为惰性加载,或只保留最近 N 轮在内存中
不可压缩的基础开销,import 时即分配。
| 共享库 | RSS |
|---|---|
| libpython3.12.so | 5.5 MB |
| libcrypto.so.3 | 5.1 MB |
| _rust.abi3.so (pydantic/tokenizers) | 4.0 MB |
| numpy _multiarray_umath | 3.5 MB |
| scipy openblas | 1.8 MB |
| pydantic_core + 其他 | ~10 MB |
以上仅 .so 部分,Python module 对象 / 类型元数据 / 代码对象等占大头
| PID | RSS | 启动时间 | 状态 |
|---|---|---|---|
| 4176527 | 862 MB | Jun 13 | 当前活跃 |
| 3264767 | 203 MB | May 13 | 残留进程 |
| 1347352 | 188 MB | May 14 | 残留进程 |
3 个进程合计占用 ~1.25 GB。清理两个残留进程可回收 ~390 MB。
Embedding 模型改远程 API
省 ~300 MB,改动集中在 memory/service.py 的 config
全局字典加清理机制
_workspace_user_token_cache 加 LRU/TTL;session 断开时清理 locks/queues/workers
会话历史惰性加载
只保留最近 N 轮在内存中,其余按需从 SQLite 读取
清理残留进程
kill 两个 5 月的老进程,立刻回收 ~390 MB