Generated by Answer me with HTML 0.5.7 · 2026-10-23 15:41 · ★ Star on GitHub

4 小时 A/B 结果

网关省了约 40 MB 并稳定不涨;hy-memory 补丁有效但不是主因

source采样 48 点 11:35-15:30 · 实测 · 2026-10-23
两个结论
  • 网关:MALLOC 调优生效,4 小时稳定在 495 到 511 MB,比老进程低约 40 MB。
  • hy-memory:缓存补丁按设计生效,隔离实测单条 41 KB 降到 4.3 KB。
  • 但真机 RSS 仍从 91 MB 涨到 409 MB,说明缓存不是主要来源。
  • 增长只跟着写入事件走,跟读取无关,这一点已用对照实验证实。
A

网关:4 小时平台化

494MB496MB498MB500MB502MB504MB506MB508MB495MB11:35504MB12:05504MB12:35502MB13:05502MB13:35508MB14:05501MB14:35495MB15:05495MB15:30
数据
11:35495MB
12:05504MB
12:35504MB
13:05502MB
13:35502MB
14:05508MB
14:35501MB
15:05495MB
15:30495MB
指标 调优后 调优前 差
RSS 中位 502 MB 545 MB -43 MB
RSS 区间 495 到 511 MB 530 到 558 MB 更窄
运行 4 小时走势 持平 仍在上行 —
匿名大块数 39 到 41 个 50 个 -18 %
最大单块 152 MB 110 MB 反而更大
  • 4 小时内 RSS 首尾相同,都是 495 MB,峰值只到 511 MB,波动 ±1.6 %。
  • 老进程同期没有采样点,但 8.4 小时时是 545 MB、9.8 小时时 530 MB,一直在高位。
  • 收益落在下调后的 40 到 60 MB 区间下沿,不是最初说的 80 到 120 MB。
  • 最大单块 152 MB 一直不变,说明有一笔固定大分配不受 arena 参数影响。
B

B hy-memory:补丁对,但不够

观察点 补丁前 补丁后
冷启 RSS 90 MB 91 MB
缓存单条占用 41 KB 4.3 KB
缓存满额上限 约 400 MB 约 42 MB
真机 2 小时内 涨到 398 MB 仍涨到 391 MB
当前 398 MB 409 MB,运行 3.5 小时
  • 补丁在隔离环境完整验证过:15 个用例全过,精度余弦相似度 1.0000000000。
  • 但真机 RSS 曲线几乎没变,幅度与时间都对得上老曲线。
  • 说明缓存只解释了 400 MB 里的一小部分,主体在别处。
C

对照实验:读不涨,写才涨

recall 十次后增量max 0 MB
今日写入事件max 10 次
单次写入对应增量max 30 MB
  • 连打 10 次 /api/v1/search 唯一查询,RSS 全程 408.8 MB,一动没动。
  • 静置 20 秒后仍是 408.8 MB,不是延迟回收的问题。
  • 时间线上 12:35 到 12:40 这 5 分钟里 RSS 从 157 跳到 391 MB,同期只有 1 次写入。
  • 15 点那一小时有 11 次读取、0 次写入,RSS 从 413 回到 410,横着走。
  • 结论:增长挂在写入链路,读取链路是干净的。
D

下一步怎么定位

写入 add提取 LLM向量化去重与写入RSS 增长
  • 候选一:写入链路里有对象被长期持有,比如全部历史向量被拉成 Python list。
  • 候选二:LLM 客户端或响应缓冲没有释放,每次写入留一份。
  • 候选三:日志把整段对话打印两次,临时字符串造成堆碎片。
  • 验证方式:隔离库起独立进程,只跑 3 次写入,量每次增量与是否回落。
  • 这条路径不碰生产记忆,也不影响正在跑的服务。
E

现在要不要回滚

网关收益
-43 MB,稳定,建议保留
hy-memory 补丁
隔离实测有效,建议保留
看门狗阈值 450
当前 409 MB 未触发,观察中
系统可用
512 MB,空闲 66 MB,页缓存可回收
  • 网关这 43 MB 是真收益,且 4 小时不涨,没有回滚理由。
  • hy-memory 补丁即使不是主因,也省下了缓存层那部分,留着没有坏处。
  • 真正要处理的是写入链路,找到后再决定是改代码还是调写入频次。 AM_EOF