35 lines
1.5 KiB
Bash
Executable File
35 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
||
# LanceDB 周期性 VACUUM(2026-09-05 建立)
|
||
# 背景:zhiyid/consolidate 每次写入产生新版本且从不清理 → 35G 膨胀(5.9万版本残留)
|
||
# 策略:每周日凌晨 3:30 停 zhiyid → optimize(cleanup_older_than=0) → 重启
|
||
# 注意:与 CBM 索引刷新(周日 3:00)错开 30 分钟,避免资源叠加
|
||
set -u
|
||
export XDG_RUNTIME_DIR=/run/user/$(id -u)
|
||
LOG=/home/muc/.logs/lance-vacuum.log
|
||
PY=/home/muc/.hermes/venvs/lance-compact/bin/python
|
||
SCRIPT=/home/muc/.hermes/scripts/lance_compact.py
|
||
|
||
echo "=== $(date '+%F %T') LanceDB VACUUM 开始 ===" >> "$LOG"
|
||
|
||
# 1. 停写(织忆短暂不可用 ~10min,凌晨可接受)
|
||
systemctl --user stop zhiyid.service zhiyi-consolidate.service >> "$LOG" 2>&1
|
||
sleep 2
|
||
|
||
# 2. VACUUM(失败不阻塞重启)
|
||
BEFORE=$(du -sb /var/lib/memoryweave 2>/dev/null | cut -f1)
|
||
"$PY" "$SCRIPT" >> "$LOG" 2>&1 || echo " ⚠️ VACUUM 失败,见上方日志" >> "$LOG"
|
||
AFTER=$(du -sb /var/lib/memoryweave 2>/dev/null | cut -f1)
|
||
echo " 空间: $(numfmt --to=iec $BEFORE) → $(numfmt --to=iec $AFTER)" >> "$LOG"
|
||
|
||
# 3. 重启服务
|
||
systemctl --user start zhiyi-consolidate.service zhiyid.service >> "$LOG" 2>&1
|
||
sleep 8
|
||
# 4. 健康确认
|
||
if systemctl --user is-active zhiyid.service > /dev/null 2>&1; then
|
||
echo " ✅ zhiyid 恢复" >> "$LOG"
|
||
else
|
||
echo " ⚠️ zhiyid 未恢复!" >> "$LOG"
|
||
systemctl --user restart zhiyid.service >> "$LOG" 2>&1
|
||
fi
|
||
echo "=== $(date '+%F %T') VACUUM 结束 ===" >> "$LOG"
|