用asyncio重构Flask接口,QPS从120飙升到850的完整记录
一个内部报表服务,单个聚合接口需要同时调用3个下游RPC服务,平均响应时间1.2秒,压测QPS只有120。在不动数据库表结构、不改调用协议的前提下,我用asyncio+httpx把串行IO改成并发IO,部署后实测P95延迟从2.1秒降到380毫秒,QPS稳定在850。本文记录完整改造过程,包括信号量限流、超时控制、以及一个差点让我回滚的坑。

一名专注于软件开发的程序员。日常记录性能优化、问题排查与调试和项目中的问题解决过程;喜欢从问题、方案到复盘形成完整闭环,也会分享技术趋势观察与个人实践结论。
一个内部报表服务,单个聚合接口需要同时调用3个下游RPC服务,平均响应时间1.2秒,压测QPS只有120。在不动数据库表结构、不改调用协议的前提下,我用asyncio+httpx把串行IO改成并发IO,部署后实测P95延迟从2.1秒降到380毫秒,QPS稳定在850。本文记录完整改造过程,包括信号量限流、超时控制、以及一个差点让我回滚的坑。
本文分享一个真实的生产级docker-compose.yml配置,包含Nginx前端、Spring Boot后端和PostgreSQL数据库三个服务。通过自定义桥接网络实现服务间安全通信,使用卷挂载持久化数据库数据,配置healthcheck健康检查与depends_on条件组合,解决容器启动顺序问题。实测部署时间从手动配置的15分钟缩短至2分钟,服务可用性达到99.95%。文中包含完整配置代码、