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

内存调优已落地

网关加分配器参数、看门狗放宽阈值,体验零中断

source实测验证 2026-10-23 11:17
做了什么
  • 网关加三个 glibc 分配器参数,下次重启生效,当前不中断。
  • hy-memory 看门狗阈值 350 改 450,冷却 20 改 45 分钟,立即生效。
  • 顺手修掉一个配置死键:阈值从 .env 读不到的老 bug。
  • 全部有备份,一条命令回滚。
A

改动清单

项目 改前 改后 生效时机
网关 MALLOC_ARENA_MAX 无,默认 16 4 下次网关重启
网关 TRIM_THRESHOLD 无,128 KB 65536 下次网关重启
网关 MMAP_THRESHOLD 无,动态上浮 131072 锁定 下次网关重启
看门狗阈值 350 MB 450 MB 已生效
看门狗冷却 20 分钟 45 分钟 已生效
hy-memory MMAP 阈值 无 131072 下次看门狗重启
  • 网关参数写在 systemd drop-in,升级不会覆盖。
  • 看门狗参数写在 .env,脚本启动即读。
B

为什么这么取值

0100200300400500600700645默认 unset 碎片499ARENA_MAX=4碎片449ARENA_MAX=2碎片
数据
默认 unset 碎片645
ARENA_MAX=4 碎片499
ARENA_MAX=2 碎片449
档位 内存 吞吐 选择理由
2 -30 % -8 % hy-memory 在用,单用途进程无所谓
4 -22 % -1.5 % 网关选它,吞吐代价在噪声内
默认 基准 基准 2 核可开到 16 个 arena,碎片最多
  • 阈值 450 的依据:历史 78 次触发的中位是 376 MB,最高 507 MB。
  • 定 450 后只有超过它的才重启,按历史数据约少八成重启。
  • 冷却 45 分钟防连跳,10 月 21 日曾出现 3 分钟内两次重启。
C

验证结果

systemd 合并环境
三个 MALLOC 键全在
看门狗干跑
threshold=450MB cooldown=45min
脚本语法
compile ok
冒烟测试
8 线程计算正确
crontab
已回简为 --quiet-ok
  • drop-in 已被 systemd 接受,systemctl show 能看到三个键。
  • 显式传参优先级仍高于 .env,已反向验证。
  • 网关当前进程还是老的,PID 2543795,未重启。
D

预期收益与代价

网关碎片预期下降max 22 %
hy-memory 重启次数预期下降max 80 %
体验中断max 0 次
可用内存变化max -290 MB 上限占用
  • 网关 530 MB 里预计能省 80 到 120 MB,取决于碎片占比。
  • hy-memory 重启变少,冷缓存重建次数跟着少。
  • 代价是 hy-memory 允许长到 450 MB,可用余量从 719 MB 降到约 430 MB。
  • 内存无硬上限,真跑满会走 2 GB swap,不会直接 OOM。
E

还剩一步

网关重启才能吃到新参数

旧进程 PID 2543795 仍是默认分配器。在会话内重启会被 Hermes 拦截,需要从外部 shell 执行下面这条,建议放在凌晨 4:30 这类空档,耗时数秒。

外部 shell 执行bash
systemctl --user restart hermes-gateway
  • 回滚方式:删掉 drop-in 目录里的 malloc.conf 后 daemon-reload,或还原备份里的四份文件。
  • 备份位置 /root/backups/mem_tune_20261023/。