Add deployment tuning and chat load test

This commit is contained in:
2026-07-08 17:45:18 +08:00
parent 6464c61396
commit efd03ff9df
8 changed files with 209 additions and 2 deletions

View File

@@ -474,3 +474,41 @@
1. dev 环境默认仍使用 1 个 worker避免本地调试时多 worker 日志和热更新混乱。
2. 生产可以通过环境变量调高 worker不需要改代码。
3. 压测脚本只作为研发/验收工具,不进入应用启动链路。
## 阶段 5 实施记录
2026-07-08 完成 worker、连接池和压测工具第一版。
已完成:
1. 后端启动支持 `BACKEND_WORKERS` 环境变量。
2. Dockerfile 启动命令支持 `uvicorn --workers ${BACKEND_WORKERS:-1}`
3. SQLAlchemy 连接池支持环境变量配置:
- `DB_POOL_SIZE`
- `DB_MAX_OVERFLOW`
- `DB_POOL_TIMEOUT`
- `DB_POOL_RECYCLE`
4. `.env.example` 和 dev compose 已补齐对应配置。
5. 新增 `scripts/chat_load_test.py`,支持并发请求 `/chat/completions` 并输出:
- 单请求结果。
- `sessionId`
- 首事件耗时。
- 总耗时。
- 成功数和失败数汇总。
6. `/chat/completions` 增加后端异常日志,用户端仍保持通用错误提示,便于压测时查堆栈。
验证记录:
1. 本机 `compileall` 检查通过。
2. 压测脚本 `--help` 检查通过。
3. `git diff --check` 通过。
4. 后端镜像重建通过。
5. 后端健康检查通过。
6. 单请求压测通过1 个请求成功,首事件约 20ms总耗时约 11.66s。
7. 2 并发、2 请求压测暴露当前模型链路风险:两次复测均出现 1 成功、1 失败,失败请求在约 60s 返回“AI 回复生成失败”。该现象更像当前模型配置或上游模型并发/超时限制,需要后续结合后端异常日志和模型管理配置继续调参。
阶段限制:
1. 当前没有做大并发压测;阶段 5 只补齐调参能力和轻量验证脚本。
2. 生产 worker 数不能只看 CPU需要结合模型接口限流、飞书频控、DB 连接数和 Redis 队列等待时间一起定。
3. 当前建议先把 `chat_max_active_requests` 调低到当前模型真实可承受范围,再逐步放大压测。