# 性能测试任务 ## 测试目标 找到系统的性能极限,识别瓶颈。 --- ## 测试步骤 ### 阶段 1:parse-service 单实例压测(不用 Flink) **目标**:测出单个 parse-service 实例的极限 **工具**:`hey`, `ab`, 或 `wrk` **测试命令示例**: ```bash # 用 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/`