perf(redis): 优化 Redis 配置并添加资源限制

- 为 Redis 添加 ./data/redis:/data 持久化挂载
- 在 redis.conf 中设置 maxmemory 2gb 限制内存使用
- 禁用 RDB 快照,启用 appendfsync everysec 避免 OOM
- 在 docker-compose.yml 中为 Redis 添加 mem_limit: 2g 和 memswap_limit: 2g
- 为 MongoDB 添加 --wiredTigerCacheSizeGB 1.5 和 mem_limit: 2500m
- 为 easyai-server 添加 mem_limit: 2200m 内存限制
- 更新 README.md 文档说明 Redis 资源护栏和迁移步骤
This commit is contained in:
2026-06-22 23:20:40 +08:00
parent 42ef68857d
commit 0aebe62f70
3 changed files with 42 additions and 10 deletions
+29
View File
@@ -99,6 +99,35 @@ Windows 下使用 `update.ps1`,功能与 Linux 版一致:
## 重要更新记录:
### 2026.06.22
1. **Redis 资源护栏**Redis 增加 `./data/redis:/data` 持久化挂载、`maxmemory 2gb``appendfsync everysec`,并禁用 RDB 快照,避免队列历史膨胀后占满内存和容器写层。
2. **Mongo/主服务内存限制**Mongo 增加 `--wiredTigerCacheSizeGB 1.5` 和容器内存限制,`easyai-server` 增加内存限制,避免 8G 机器上 Redis/Mongo/Node 相互挤压触发 OOM。
3. **升级前置要求**:如果线上 Redis 之前没有 `/data` volume,先完成 Redis request-limit 队列历史清理,再迁移 Redis 数据目录,最后重建 Redis 容器。
#### Redis 数据迁移与重启步骤
执行前建议先做云盘快照或外部备份。磁盘空间紧张时,不要直接在当前机器上 `BGSAVE` 或复制大体积 Redis 文件。
```bash
cd ~/easyai
# 1. 先通过后台 ModelRuntime 运维接口或后端启动清理逻辑清理 request-limit 历史:
# - trim bull:request_limit_*:events 到小长度
# - 只清 completed/failed,不删除 waiting/active/delayed
# 2. 确认 Redis 内存已经下降后,再准备新的持久化目录
mkdir -p ./data/redis
# 3. 如果旧 Redis 数据在容器写层,先按实际容器内 /data 内容迁移到宿主机目录
docker cp redis:/data/. ./data/redis/
# 4. 更新配置后重建关键容器
docker compose up -d redis mongo easyai-server
```
迁移后验收建议:Redis `used_memory_human < 2G``bull:request_limit_*:events` 长度维持在小窗口,24 小时内无 OOM。
### 2026.3.20
1. **新增 Agent 记忆服务(AMS)模块**:新增 `agent-memory`Agent 长期记忆)容器,复用 `easyai-pgvector` 数据库(需 pgvector 扩展),用于支持 Agent 对话记忆、向量召回与反馈能力。