找到系统的性能极限,识别瓶颈。
目标:测出单个 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
记录指标:
目标:测试完整流程端到端性能
测试矩阵:
| 测试 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 基准 | 硬件极限 |
观察指标:
可能的瓶颈:
| 瓶颈 | 现象 | 优化方案 |
|---|---|---|
| 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 调用延迟高 | 同机房部署/减少网络开销 |
建议测试文件:
文件类型:
RealFlinkJob.javaparse-service/main.pyschedule-embedding-api/