Generated by Answer me with HTML 0.5.7 · 2026-10-23 11:05 · ★ Star on GitHub
你现在的内存相关设置
MALLOC 只写在一处,网关本体没吃到
一句话
- MALLOC_ARENA_MAX=2 只写在 /root/.hermes/.env 第 79 行。
- 生效的是 hy-memory 与工具子进程;网关本体没有。
- 网关跑 glibc 默认,2 核最多开 16 个 arena。
谁吃到了 MALLOC 设置
| 进程 | MALLOC_ARENA_MAX | MALLOC_TRIM_THRESHOLD_ | 说明 |
|---|---|---|---|
| hy-memory server | 2 | 65536 | 启动脚本从 .env 读 |
| Hermes 工具子进程 | 2 | 65536 | 网关派生时注入 |
| 网关本体 | 无 | 无 | 01:30 启动,自行不带这两个键 |
| caddy / mihomo | 无 | 无 | 默认值运行 |
- 网关自己的 environ 里查不到这两个键。
- 也就是说 545 MB 里那 157 个匿名块,还按默认 16 个 arena 分配。
.env 里的内存相关设置
- MALLOC_ARENA_MAX
- 2
- MALLOC_TRIM_THRESHOLD_
- 65536
- MEMORY_VECTOR_STORE
- chroma
- HY_MEMORY_MODE
- pro
- HY_MEMORY_WRITE_TURN_WINDOW
- 8
- RECONCILE_ENABLED
- false
- RECONCILE_ENABLED 为 false,写入期不做 LLM 判重合并。
- WRITE_TURN_WINDOW 设为 8 轮,减少写入次数。
- 这两项是 09-27 调优时定的,与 MALLOC 同批。
C hy-memory 看门狗现状
| 项目 | 值 |
|---|---|
| 阈值 | 350 MB |
| 冷却 | 20 分钟 |
| 累计重启 | 79 次 |
| 最近一次 | 353 MB → 90 MB |
| 当前 RSS | 159 MB,运行 15 分钟 |
当前 RSS159 / max 350 MB
今日重启max 2 次
- 重启会把冷缓存清掉,代价是下次查询变慢。
- 79 次累计说明这个阈值一直在起作用。
内核与 cgroup
- glibc 版本
- 2.36
- CPU
- 2 核
- arena 默认上限
- 16 个
- vm.swappiness
- 30
- vm.overcommit_memory
- 0
- vm.vfs_cache_pressure
- 200
- swap
- 2 GB,已用 82 MB
cgroup 没有内存限额
hermes-gateway.service 的 memory.max 是 max,不是 900 MB。当前该 cgroup 用 686 MB,其中网关本体 545 MB,子进程约 140 MB。
- 之前记的 900 MB 限额现在查不到,实际是不限。
- 好处是跑重活不会被 OOM 打断。
- 坏处是没有硬边界,只能靠肉眼看 free。