# 并发控制快速参考 ## 配置 ```bash # 设置最大并发数(默认 10) export MAX_CONCURRENT_JOBS=20 ``` ## API ### 查询并发状态 ```bash GET /jobs/concurrency/status ``` **响应:** ```json { "max_concurrent": 10, // 最大并发数 "available_slots": 7, // 可用槽位 "running_jobs": 3 // 运行中任务数 } ``` ## 代码示例 ### 在 JobManager 中使用 ```python # 并发控制自动生效,无需额外代码 job_manager = await get_job_manager() job_id = await job_manager.create_job(...) # 任务会自动排队,等待可用槽位 asyncio.create_task(job_manager.execute_job(job_id)) ``` ### 查询并发状态 ```python job_manager = await get_job_manager() status = job_manager.get_concurrency_status() print(f"运行中: {status['running_jobs']}/{status['max_concurrent']}") print(f"可用槽位: {status['available_slots']}") ``` ## 监控 ### 实时监控 ```bash # 持续监控并发状态 watch -n 1 'curl -s http://localhost:8000/jobs/concurrency/status | jq' ``` ### 测试脚本 ```bash # 运行并发控制测试 ./scripts/test_concurrency.sh ``` ## 推荐配置 | 任务类型 | 推荐并发数 | |---------|-----------| | CPU 密集型 | 核心数 × 1.5 | | I/O 密集型 | 核心数 × 5-10 | | 混合型 | 核心数 × 2-3 | ## 故障排查 ### 任务一直 pending ```bash # 检查并发状态 curl http://localhost:8000/jobs/concurrency/status # 如果 available_slots = 0,说明所有槽位被占用 # 解决方案: # 1. 等待当前任务完成 # 2. 增加并发限制 # 3. 优化算法性能 ``` ### 系统资源耗尽 ```bash # 降低并发限制 export MAX_CONCURRENT_JOBS=5 # 重启服务 ./scripts/run_dev.sh ``` ## 相关文档 - [详细文档](./concurrency-control.md) - [实现总结](./concurrency-control-changelog.md)