问题域/PD-349

并发控制

Concurrency Control

请求级并发限制保护GPU等有限资源不被过载

子问题

1.请求并发限制

2.资源保护

3.过载拒绝策略

4.动态并发调整

5.多 Worker 任务队列竞争安全

6.计算进程数自适应与超时强杀

7.GPU 进程级显存隔离

各项目的解法1 solutions

Signals

横向对比

维度MinerU
并发模型三层控制:Semaphore 门控 + SQLite 原子抢占 + ProcessPool 动态分片
过载策略快速拒绝 503,不排队不等待
任务分配Pull 模式:Worker 主动轮询 SQLite 队列,BEGIN IMMEDIATE 悲观锁
资源隔离CUDA_VISIBLE_DEVICES 进程级 GPU 隔离
超时保护ProcessPool 全局超时 + SIGTERM→SIGKILL 两阶段强杀
配置方式环境变量驱动(MINERU_API_MAX_CONCURRENT_REQUESTS)

最佳实践

1.使用Semaphore实现请求级并发控制并返回503拒绝过载请求

2.先检查 Semaphore._value 再 acquire 实现快速拒绝而非排队等待

3.SQLite BEGIN IMMEDIATE + rowcount 双重校验实现无外部依赖的原子任务分配

4.ProcessPoolExecutor 用 SIGTERM→SIGKILL 两阶段终止防止僵尸进程