03-performance-testing.md 2.6 KB

性能测试任务

测试目标

找到系统的性能极限,识别瓶颈。


测试步骤

阶段 1:parse-service 单实例压测(不用 Flink)

目标:测出单个 parse-service 实例的极限

工具hey, ab, 或 wrk

测试命令示例

# 用 hey 压测
hey -n 1000 -c 10 -m POST \
  -H "Content-Type: application/json" \
  -d '' \
  "http://localhost:8000/api/v1/parse/path?file_path=/path/to/test.docx"

# 或用 ab
ab -n 1000 -c 10 -p post_data.json \
  -T "application/json" \
  http://localhost:8000/api/v1/parse/path?file_path=/path/to/test.docx

记录指标

  • QPS(每秒请求数)
  • 平均响应时间
  • P50/P95/P99 延迟
  • CPU/内存使用率
  • 错误率

阶段 2:Flink + parse-service 集成测试

目标:测试完整流程端到端性能

测试矩阵

测试 ID Flink 并行度 parse-service 实例数 预期 QPS 瓶颈猜测
1 1 1 基准
2 2 1 ≈基准 parse-service
3 2 2 ≈2x 基准
4 4 2 ≈2x 基准 parse-service
5 4 4 ≈4x 基准
6 8 4 ≈4x 基准 parse-service
7 8 8 ≈8x 基准 硬件极限

观察指标

  • Flink Web UI(http://localhost:8081
    • 任务完成时间
    • 吞吐量
    • 背压情况
  • parse-service 日志/监控
    • CPU/内存/GPU
    • 响应时间
  • embedding-api 监控

阶段 3:瓶颈识别和优化

可能的瓶颈

瓶颈 现象 优化方案
parse-service CPU parse-service CPU 100% 增加 parse-service 实例
parse-service 内存 OOM 或 GC 频繁 增加内存/优化代码
Flink 背压 Flink Web UI 显示背压 增加 parse-service 实例/优化 Async I/O
embedding-api embedding-api 响应慢 优化 embedding-api/增加实例
网络 Flink ↔ parse-service 调用延迟高 同机房部署/减少网络开销

测试文件选择

建议测试文件

  • 小文件(<1MB):测试 QPS
  • 中等文件(1-10MB):测试吞吐量
  • 大文件(>10MB):测试稳定性

文件类型

  • PDF
  • Word
  • 图片(OCR)
  • 音频(ASR)
  • 视频(抽帧+模型)

生产环境性能验收标准

  • 单 parse-service QPS > X(根据文件定)
  • 多实例线性扩展(加实例 QPS 线性提升
  • P99 延迟 < 30s(根据业务定)
  • 错误率 < 0.1%
  • 7x24 小时稳定性测试通过

相关文件

  • RealFlinkJob.java
  • parse-service/main.py
  • schedule-embedding-api/