Generated by Answer me with HTML 0.5.7 · 2026-10-23 09:56 · ★ Star on GitHub
你的运存占用拆解
总量 1708 MB,已用 1008 MB,大头不是 hy-memory
结论
- 第一名是 Hermes 网关:545 MB,占总量 32 %。
- hy-memory 第二:161 MB,占 9.4 %。
- 两者合计占已用内存的 70 %。
- hy-memory 今天已被看门狗重启两次。
内存去向全景
数据
| 数值 | 占比 | |
|---|---|---|
| 网关 Hermes | 545 | 30% |
| 页缓存 | 492 | 27% |
| 空闲 | 374 | 21% |
| hy-memory | 161 | 9% |
| 其他进程 | 130 | 7% |
| 内核 slab | 105 | 6% |
| 项目 | 占用 | 占总内存 | 能否回收 |
|---|---|---|---|
| Hermes 网关 | 545 MB | 31.9 % | 否 |
| 页缓存 | 492 MB | 28.8 % | 可回收 |
| 空闲 | 374 MB | 21.9 % | — |
| hy-memory | 161 MB | 9.4 % | 否 |
| 其他进程 | 130 MB | 7.6 % | 否 |
| 内核 slab | 105 MB | 6.1 % | 72 MB 可回收 |
- 页缓存不是真占用,需要时内核会交出来。
- 可用余量 699 MB,现在没到紧张线。
网关这 545 MB 花在哪
- 进程 RSS
- 545 MB
- 匿名私有内存
- 531 MB
- 文件映射
- 19 MB
- glibc 堆 [heap]
- 23 MB
- 线程数
- 40
- 运行时长
- 8.4 小时
- 峰值 VmHWM
- 549 MB
- 匿名块 157 个,最大三块各 110 MB、53 MB、38 MB。
- 堆只占 23 MB,说明大块分配走 mmap,不是连续堆。
- 加载的库只有 aiohttp、yaml、pydantic,没有 numpy 或 pandas。
- 40 个线程全部 idle,不是正在算,是留着的对象。
- 峰值 549 MB 与当前 545 MB 只差 4 MB,不是快速泄漏。
C hy-memory 今天被重启两次
| 时间 | 触发 | 旧 RSS | 重启后 |
|---|---|---|---|
| 03:05 | 达 350 MB 阈值 | 469 MB | 90 MB |
| 09:50 | 达 350 MB 阈值 | 372 MB | 90 MB |
| 现在 | — | 144 MB | 冷启 5.9 分钟后 |
当前增速max 9.3 MB/分
阈值max 350 MB
今日重启次数max 2 次
- 冷启 90 MB,五分钟涨到 144 MB,属于预热。
- 之后进入平台期,但今天两次都冲到阈值。
- 换 faiss 能省的那 81 MB,只够把它少触发一次。
真正能动的杠杆
- 网关环境没有设置 MALLOC_ARENA_MAX,40 线程各开 arena 造成碎片。
- 设成 2 或 4 是唯一不改代码就能压网关 RSS 的手段,需要重启网关。
- hy-memory 侧真正省内存的是降 l1_raw 条数,现有 1062 条原始层。
- 换 faiss 省 81 MB,价值低于先压网关。