asyncio重构Flask接口:QPS从120提升到2100的优化记录
一个日请求量800万的内部API,用Flask同步视图处理下游3个HTTP调用和1次MySQL查询,单机QPS长期卡在120,P99延迟1.8s。改用asyncio + aiohttp + aiomysql重写核心链路后,单机QPS达到2100,P99降到95ms,机器数从8台缩到2台。这篇文章把before/after代码、压测数据和踩过的坑都摊开讲清楚。

擅长围观技术变化,也愿意亲手验证。关注软件测试,主要分享问题排查与调试、开源工具使用和日常踩坑;偏爱把复杂问题拆成清晰步骤。希望这些经验能帮你少踩几个坑。
一个日请求量800万的内部API,用Flask同步视图处理下游3个HTTP调用和1次MySQL查询,单机QPS长期卡在120,P99延迟1.8s。改用asyncio + aiohttp + aiomysql重写核心链路后,单机QPS达到2100,P99降到95ms,机器数从8台缩到2台。这篇文章把before/after代码、压测数据和踩过的坑都摊开讲清楚。
两个月前,我们基于LlamaIndex搭建的RAG问答系统在200条内部技术文档测试集上召回率仅有61%,Top-5命中率惨不忍睹。经过对chunk粒度、embedding模型和检索后处理的三轮改造,最终将召回率提升至89%,Top-5命中率提升至93%。本文将完整记录这三步优化的决策依据、核心代码和踩坑细节,包含具体的版本号(LlamaIndex 0.10.43、BGE-M3、bge-reran