![[Bug]: Heavy RAM Usage over time](https://www.chat-gpts.plus/wp-content/uploads/2026/07/12685-b90db227.jpg)
[Bug]: Heavy RAM Usage over time
快速结论:LiteLLM Proxy 在持续运行数天后会出现显著的内存泄漏,尤其是启用了 pass-through endpoints 的场景。优先排查 initialize_pass_through_endpoints 是否为重复注册路由产生泄漏,或者通过环境变量限制内存队列大小。
问题场景
用户通过 Docker 部署 LiteLLM Proxy,每天发起大量请求(含 proxy 和 pass-through 模式),运行数天后 RAM 持续增长,直至触发监控警报或容器因内存耗尽被重启。部分用户反映在空闲状态下内存也会逐步膨胀,单容器可消耗 14–20 GB 内存。
报错原文
Traceback (most recent call last):
File "/usr/lib/python3.13/site-packages/litellm/proxy/hooks/proxy_track_cost_callback.py", line 178, in _PROXY_track_cost_callback
raise Exception(
"User API key and team id and user id missing from custom callback."
)
Exception: User API key and team id and user id missing from custom callback.
10:34:50 - LiteLLM Proxy:ERROR: proxy_track_cost_callback.py:215 - Error in tracking cost callback - User API key and team id and user id missing from custom callback.
日志中无直接内存溢出错误,但上述回调错误反复出现。
原因分析
项目维护者确认存在内存泄漏问题,主要可能原因有两个:
- pass-through endpoints 路由重复注册: 在
initialize_pass_through_endpoints函数中,当动态更新 endpoint 时,FastAPI 路由表会被重复添加相同的路由,导致内存持续累积。 - 内存队列(in-memory queue)过大: 高并发场景下,默认的队列大小可能积累大量待处理数据,占用大量 RAM。
注释中用户指出的 proxy_track_cost_callback 重复报错可能加剧资源消耗,但不是主因。
环境排查
- LiteLLM 版本:v1.73.6-stable.patch.1 ~ v1.74.15
- 部署方式:Docker(Almalinux 9)
- 每日调用量:< 20k 次
- 是否使用 pass-through endpoints?
- 是否配置了 cost tracking / langfuse 等回调?
解决步骤
- 优先尝试 在
config.yaml中设置环境变量,限制内存队列大小:environment_variables: MAX_IN_MEMORY_QUEUE_FLUSH_COUNT: "5000" MAX_SIZE_IN_MEMORY_QUEUE: "500" - 如果使用了 pass-through endpoints,升级到包含修复的镜像:
ghcr.io/berriai/litellm:litellm_dev_memory_fix-litellm_v1.73.0-dev_memory_fix_2 - 避免动态更新 pass-through endpoints 导致重复注册;如无法避免,可配合步骤 2 的镜像。
- 为容器设置内存上限作为临时保护:
deploy: resources: limits: memory: 14G reservations: memory: 2G - 最直接的临时方案:添加定时任务(cron)每 12 小时重启容器,缓解内存增长。
验证方法
部署修复镜像或配置环境变量后,持续运行至少 48 小时,监控 Docker 容器内存使用曲线,确认不再出现持续线性增长。可通过 docker stats 或内存监控工具观察,确保重启间隔显著延长或无需手动干预。



