已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
【背景】
我做了 8 年性能优化,最近在帮一个团队复盘一个 Python 3.11 的推荐服务:FastAPI + asyncio,入口 QPS 约 3000,单机 8C16G。核心链路是「读特征 → 打分(一次约 3~6ms 的 CPU 密集计算)→ 拼响应」。打分这一步最初写在 event loop 里,后来抽到 loop.run_in_executor,用的是默认 ThreadPoolExecutor(max_workers = min(32, cpu+4) = 12)。
【现象】
loop.time() 前后打点)出现 200ms+ 的尖刺。【已尝试的排查与结果】
【期望得到的答案形态】 想请教有真实线上 asyncio + CPU 密集混合负载经验的同行:
我倾向于最终方案是「打分独立成进程池 + 按优先级分队列」,但想听听大家踩过的坑,避免我重蹈覆辙。