2.9 KiB
2.9 KiB
管理端大消息量卡顿修复(2026-09-14)
状态:本地代码、回归测试及前端生产构建完成;尚未部署到服务器。
修复范围:归档概览、会话与消息、人员唯一标识、导出中心、COS 存储。
- 会话/人员子查询带租户条件,利用现有消息索引,避免逐项扫描全部消息。
- 增加与会话游标排序、人员列表、素材列表、消息时间排序匹配的索引;旧库启动时自动增加,保留业务数据。
- 会话及消息游标使用时间和 ID 的联合范围定位。
- 同步数据库、COS 和导入工作移入工作线程,避免阻塞管理 API 事件循环及鉴权。
- 导出任务串行运行、异步排队,不挤占 API 工作线程。任务列表由逐条查询改为两次批量查询;导出消息避免全量排序。
- 账号选择器不再每次统计所有账号的归档消息量。
- 浏览器每页最多显示 50 个会话、100 条消息;不再无限追加 DOM;音视频点击播放后才加载。
- 切换账号/页面取消旧请求,旧响应不覆盖新页面;导出轮询等待上一请求结束,后台标签页停止请求。
实测
100 万条合成消息、2000 个会话、2000 人,两个租户。会话和人员旧查询执行超过 5 秒被测试主动中止;修复后首次分别为 18ms / 33.2ms。统计 61.9ms、导出列表 5.2ms、素材列表 3.2ms。详见 benchmark.json。本机基准不代表线上网络及服务器耗时。
后台综合回归 209 项通过;性能/并发专项 7 项通过(含 45 个排队导出);前端请求生命周期 3 项通过;vue-tsc 和生产构建通过。
更新服务器
本包含 4 个更新后的 Python 文件、前端 dist、校验清单及相对于本次修改前源码的 changes.diff。沿用当前项目 deploy/im-admin 的 Docker 部署,不更换配置或数据库。
- 确认服务器是本项目对应版本,并核对 changes.diff;记录部署目录、当前镜像及服务状态。
- 备份当前 4 个 Python 文件、前端 dist;通过 SQLite backup 或停止服务后的文件备份保存 data/backend.db 及密钥文件,备份留在服务器。
- 将本包 wechat_rpa 下 4 个文件覆盖到对应源码目录,将本包 dist 内容更新到 admin-web/apps/web-antd/dist。
- 在服务器的 deploy/im-admin 下执行 docker compose up -d --build。启动时自动补齐索引;大库首次建索引需等待,不要反复重启。
- 检查 docker compose ps 和日志、/api/v2/health;登录后逐项检查归档概览、会话翻页、人员、导出及 COS。浏览器刷新以加载新资源。
- 如需回退,恢复备份的源码和 dist 后重新构建;本次只增加索引,旧版本可继续使用数据库,无需删除索引或恢复旧聊天数据。
本包不含数据库、聊天记录、账号配置、密钥或登录凭据。无需重新安装各电脑的桌面端软件。