用asyncio重构Flask API,QPS从120飙升到2100的完整记录
一个内部报表接口,平均响应时间850ms,高峰期线程池被打满,CPU利用率却只有35%。排查发现80%的时间阻塞在第三方HTTP调用和数据库IO上。我用了三天时间,把Flask+requests同步栈改造成asyncio异步栈,配合uvloop和httpx,最终QPS从120提升到2100,P99延迟从2.3s降到380ms。本文不聊虚的,直接给出before/after代码、压测脚本、以及我在迁
用asyncio重构Flask API,QPS提升280%的完整记录
面对一个基于Flask 2.2.5 + Gunicorn的Web服务,在压测中发现其QPS仅为320,且CPU利用率不足40%。通过引入asyncio 3.11.4将阻塞式IO调用改为异步协程,并配合uvloop 0.19.0,最终将QPS提升至1210,P99延迟从890ms降至210ms。本文记录了一次真实的重构过程,包括代码改造、线程池调优、连接池复用等细节,以及过程中遇到的坑(如async
7B模型LoRA微调实录:显存8G下的QLoRA训练与推理对比
本文记录了一次完整的7B模型微调实践,使用QLoRA在单张RTX 3090(24G显存)上将基座模型显存占用压至8.2G,微调后模型在领域问答任务上的BLEU从0.21提升至0.67,而LoRA模块参数量仅占全模型的0.6%。文中包含从数据清洗到训练配置的完整代码,以及loss曲线和推理效果对比,重点解决量化后训练不稳定、中文分词器截断两个实际问题。如果你正在犹豫要不要上LoRA,这篇文能帮你少踩
FastAPI接口耗时1180ms降至90ms:Profile与缓存优化全记录
接手一个内部报表服务,发现核心聚合接口在100并发下P95耗时高达1180ms,数据库CPU直接飙到80%。本文记录一次完整的API性能调优过程:从cProfile和py-spy定位瓶颈,到SQLAlchemy懒加载陷阱,再到Redis缓存热点数据与SQL索引重建。优化后P95降至90ms,数据库CPU降到12%,单机QPS从210提升到2400。文章包含完整的Profiling命令、缓存策略代码
Git分支策略与Code Review流水线:支撑300人团队的协作体系
当团队从15人扩张到300人,主干开发模式导致的代码冲突和发布事故频发。本文基于Git 2.39.1和GitLab 15.11,详解我们落地的一套分支策略:trunk-based + 短期特性分支,配合强制Code Review流水线(MR Approval Rules + 机器人自动检查)和CI/CD门禁(Jenkins 2.414.2 + SonarQube 10.2)。通过这套体系,我们将特
LangChain 0.3手写AutoGPT式Agent:记忆与循环控制全拆解
当LangChain官方Agent在长任务中token浪费率达37%时,我决定手写一个轻量AutoGPT核心。本文基于langchain 0.3.1+Python 3.11,实现一个仅用236行代码的Agent,支持工具动态注册、双缓冲记忆管理、异常熔断与步数预算控制。在“查询数据库并生成周报”任务中,对比ReAct Agent,token消耗降低52%,任务成功率从79%提升至94%。全程附可运
RAG召回率从61%到89%:chunk重切、embedding换代与rerank落地的完整记录
两个月前,我们基于LlamaIndex搭建的RAG问答系统在200条内部技术文档测试集上召回率仅有61%,Top-5命中率惨不忍睹。经过对chunk粒度、embedding模型和检索后处理的三轮改造,最终将召回率提升至89%,Top-5命中率提升至93%。本文将完整记录这三步优化的决策依据、核心代码和踩坑细节,包含具体的版本号(LlamaIndex 0.10.43、BGE-M3、bge-reran
向量数据库选型实录:Milvus与Qdrant在2000万级数据下的性能对决
在电商以图搜图场景中,我们对比了Milvus 2.4.1与Qdrant 1.9.2在2000万条768维向量下的表现。Milvus在查询延迟上以P99 12ms领先Qdrant的18ms,但Qdrant在内存占用上仅为Milvus的1/3。本文记录了完整的部署参数、压测代码与调优细节,包含磁盘索引构建的踩坑过程,最终给出了不同业务规模下的选型建议。
asyncio重构Flask API:请求耗时从450ms降至120ms
某内部系统的用户详情接口,因串行调用三个独立上游服务,P99延迟飙升至860ms,严重影响前端体验。本文记录一次基于asyncio的并发改造全过程:引入`httpx.AsyncClient`配合`asyncio.gather`,将三次串行RPC改为并发请求,同时处理了连接池复用与超时熔断。改造后P95耗时从450ms降至120ms,吞吐量提升3.2倍,CPU占用反而下降。文中提供完整before/
向量数据库选型实测:Milvus与Qdrant在1亿级图片检索下的资源博弈
在广告风控场景中,我们将Milvus 2.4与Qdrant 1.9部署在相同硬件(4C16G)上,使用ResNet50提取的768维特征向量构建1亿级索引。实测结果显示:Qdrant在查询延迟(P99 23ms vs Milvus 41ms)和内存占用(8.2G vs 12.7G)上均占优,但Milvus在批量写入吞吐上领先40%。本文详细记录了两者的Docker部署步骤、HNSW参数调优过程,以
asyncio重构Flask接口:QPS从387到2106的完整调优记录
一次真实的Web API性能优化实战。某内部报表系统的`/api/summary`接口在高峰期频繁超时,单机QPS仅387,P99延迟高达3.2s。通过引入asyncio + aiohttp替代requests同步调用,配合信号量限流和连接池复用,最终将单机QPS提升至2106(+444%),P99延迟降至486ms。文章完整记录了从问题分析、方案设计、代码重构到压测对比的全过程,并详细说明了as
Git Flow与Trunk Based双轨制:团队协作与CI/CD集成方案
本文记录了我们团队从混乱的Git使用到建立规范工作流的全过程。针对12人研发团队、每周20+次合并的现状,我们设计了“Trunk Based为主、Git Flow为辅”的双轨制分支策略,配合基于GitLab的MR强制Code Review流程,以及Jenkins Pipeline自动化的CI/CD集成方案。通过引入pre-commit钩子、规范提交信息、自动化测试门禁,将代码冲突率从平均每周8次降
Docker Compose编排多服务容器化部署:网络、健康检查与依赖启动顺序实践
在微服务容器化部署过程中,服务启动顺序混乱、依赖服务未就绪导致应用崩溃是高频故障。本文基于Docker Compose 2.24.2与Docker Engine 24.0.7,分享一个包含Nginx网关、Spring Boot后端、PostgreSQL数据库及Redis缓存共4个服务的生产级编排配置。通过自定义bridge网络隔离、命名卷持久化、healthcheck健康检查及depends_on
LangChain 0.3手写Agent:工具注册与记忆隔离的7个实现细节
当AutoGPT式任务循环遇上LangChain回环陷阱,token成本直翻3倍。本文基于langchain 0.3.1+openai 1.52手写一个200行Agent,解决工具参数幻觉、记忆污染、死循环三大痛点。实测在金融新闻摘要场景下,错误重试率从41%降至12%,单轮任务token消耗稳定在2.3k±200。代码见GitHub仓库。
LangChain与AutoGPT思想融合:手写可观测AI Agent核心循环
本文不讨论概念,直接展示一个基于LangChain 0.2.7与GPT-4o-mini(温度0.2)的Agent实现,重点解决三个真实痛点:如何用Pydantic模型定义带参数约束的工具、如何用有限大小滑动窗口管理超过8k token的对话历史、以及如何设计带最大迭代次数(默认10次)的循环控制并捕获JSON解析异常。代码仓库实测单次任务调用LLM次数从裸写prompt的15次降至7次,成功率从6
FastAPI慢查询调优实录:profiling定位与缓存策略压测对比
接手一个FastAPI服务,单接口响应从200ms恶化到2.3s,QPS从380跌到45。本文记录完整调优过程:先用cProfile和py-spy定位到N+1查询和JSON序列化瓶颈,再通过SQLAlchemy joinedload合并查询、引入Redis缓存热点数据、优化ORM懒加载策略。压测数据对比:P95延迟从2100ms降至180ms,吞吐量提升5.2倍。文末附踩坑记录和通用调优check
asyncio重构Flask接口:并发提升17倍与连接池压测实录
一个基于Flask+Requests的聚合查询API,在QPS 200时P99延迟高达2.3秒,数据库连接频繁超时。通过引入asyncio+aiohttp+asyncpg重构,将阻塞IO替换为事件循环驱动,配合连接池限流,QPS 200时P99降至135ms,吞吐量从120req/s提升至2050req/s。本文完整记录重构思路、核心代码、以及踩过的坑(如asyncio.Semaphore滥用、u
Git分支模型与Code Review流水线:支撑30人团队的协作体系
当团队从5人扩张到30人,基于主干开发的Git协作模式彻底失控——频繁的冲突、被绕过的Code Review、破碎的CI构建。本文记录了我们在2024年Q2完成的一次Git工作流重构:基于`trunk-based`与`GitFlow`的混合分支策略、基于`git diff --stat`的自动化Review检查、以及将`husky`+`lint-staged`+`GitHub Actions`串成
7B模型LoRA/QLoRA微调实录:显存从80G降到24G的工程化调优
在金融领域情感分析任务中,直接全参微调Qwen2-7B-Instruct需要4张A100-80G,而通过QLoRA(4bit NF4量化+双LoRA适配器)将显存压至单卡24G,训练速度仅下降18%。本文记录完整微调流程,包含数据清洗规则(去重/截断/标签平衡)、Peft与BitsAndBytes配置细节,并给出loss曲线从2.1降至0.35的收敛过程,以及微调前后模型在测试集上的F1值对比(0
Prompt Engineering实测对比:三版指令调优GPT-4o输出质量与Token成本
本文以“电商评论情感分类+原因抽取”为任务,对GPT-4o(0613版本)设计了三版Prompt:零样本基线、结构化指令、带Few-shot与JSON Schema约束的进阶版。实验基于OpenAI API(max_tokens=800,temperature=0.2),共测试200条真实评论。结果显示:进阶版在F1分数上比基线提升21.3%(0.712→0.925),但Token消耗增加38%(