当前位置: 首页 > news >正文

第十八课实战:后端性能优化实战——一个接口从 2 秒到 90ms 的全过程

目标:
不是讲概念,而是演示一次真实的性能优化过程
如何从一个 2 秒接口,优化到 90ms,并且每一步都有依据。


场景设定

接口:

GET /users?page=1&size=20

表数据量:50 万条
技术栈:Spring Boot + MySQL + Redis

初始状态(问题版本)

初始代码问题点

1)SQL 问题

SELECT * FROM user;
  • 无索引
  • 全表扫描
  • 返回 50 万行

2)接口问题

  • DTO 字段 30+
  • 返回整个 List
  • 打印全部日志

3)RPC 问题

for(User u : list){ rpcService.getScore(u.getId()); }

典型N+1 调用

初始压测结果

指标数值
P50300ms
P901200ms
P992100ms
CPU35%
内存稳定

结论:不是资源打满,是逻辑慢。

第一步:SQL 优化(最大头)

动作

1)加索引

CREATE INDEX idx_user_status_time ON user(status, create_time);

2)分页 + 字段裁剪

SELECT id,name,status FROM user WHERE status=1 ORDER BY create_time DESC LIMIT 20;

3)Explain 对比

优化前优化后
type=ALLtype=ref
rows=500000rows=120

SQL 优化后压测

指标数值
P99

2100 →420ms

第二步:接口层优化

问题点

  • 返回字段过多

  • 日志拖慢

  • 序列化重

动作

DTO 裁剪

class UserDTO { Long id; String name; }

日志采样

if(random()<0.01){ log.info("users:{}", list.size()); }

接口层优化后

指标数值
P99420 →180ms

第三步:RPC 优化(N+1 问题)

原始

for(User u : list){ rpc.getScore(u.id); }

改为批量

rpc.batchGetScore(ids);

RPC 优化后

指标数值
P99180 →130ms

第四步:JVM 优化

观察指标

  • Minor GC 频繁

  • 对象创建多

动作

  • 复用集合

  • 减少字符串拼接

  • 调整线程池

JVM 优化后

指标数值
P99130 →90ms
GC 次数-40%

全过程对比

阶段P99
初始2100ms
SQL 优化420ms
接口优化180ms
RPC 优化130ms
JVM 优化90ms

优化核心逻辑总结

先 SQL 再 接口 再 RPC 最后 JVM

实战中的关键判断

现象判断
CPU 不高却慢逻辑慢
P99 高极端请求问题
SQL rows 巨大索引问题
GC 多对象创建问题

工程经验总结

不要一上来做的事

  • 不要先加缓存

  • 不要先调 JVM 参数

  • 不要先加 MQ

应该先做的事

  • 看 P99

  • Explain SQL

  • 拆链路

  • 再优化

最终一句话

性能优化不是“调参”,而是“定位 → 分层 → 验证”的工程流程。

当你能把一个 2 秒接口优化到 90ms,
你就已经具备中高级后端工程师的实战能力了。

http://www.jsqmd.com/news/369423/

相关文章:

  • 2026 MINI COOPER 碳纤维改装升级推荐指南:精准适配与质感进阶的品牌选择 - 速递信息
  • 大模型实习模拟面试之智谱大模型Agent一面:从DPO训练细节到流式输出规则的硬核实战复盘
  • YC 专访 OpenClaw 创始人:80% 的 App 将会消失,我们还剩下什么?
  • Reorx:OpenClaw 正在重塑我的数字生活,以及为什么我退订了所有 SaaS
  • 大模型实习模拟面试之字节大模型Agent算法一面:从多模态统一到DeepSpeed训练的硬核拷问
  • 第十八课:后端性能优化方法论——从 SQL 到 JVM 到接口(工程实战全景版)
  • 池州个人心理咨询室深度测评:专业与口碑的双重考量 - 野榜数据排行
  • 2026化工原料厂家哪家好?双氧水/硫磺/工业盐标杆企业全解析 - 深度智识库
  • 2026年有实力的园林景观设计,别墅园林景观公司品牌推荐清单 - 品牌鉴赏师
  • 大模型实习模拟面试之大模型算法Agent八股整理秋招面经:从LangChain到Multi-Agent协作的系统性拷问
  • 2025年-2026年全屋定制品牌推荐:居家生活场景深度评测,针对收纳痛点与风格统一指南 - 十大品牌推荐
  • 对比一圈后 9个降AIGC平台深度测评:继续教育降AI率必备工具推荐
  • 京东e卡线上回收平台推荐 - 团团收购物卡回收
  • 大模型实习模拟面试之深圳Agent小厂一面:从Prompt工程到MCP服务构建的全栈实战深度复盘
  • 2026年郑州热门的游乐设备公司推荐,郑州战魂游乐设备靠谱吗 - myqiye
  • leetcode 976. Largest Perimeter Triangle 三角形的最大周长
  • 2026年尼龙回收热门厂家,环保与效率并存,尼龙回收哪家好优质品牌选购指南 - 品牌推荐师
  • 2026年诚信的移动电动隔断,商用电动隔断厂家采购决策指南 - 品牌鉴赏师
  • 全屋定制品牌如何避坑?2025年-2026年全屋定制品牌推荐与评价,解决板材环保与工艺一致性痛点 - 十大品牌推荐
  • Stack Canary(栈溢出保护)
  • NX/DEP(栈不可执行)
  • Java 零基础入门:核心基础知识点全总结
  • 实操指南|安科士1.25G CWDM SFP光模块选型、部署与运维全攻略
  • 2026年靠谱的楚雄家具,红河家具厂家品牌推荐榜单 - 品牌鉴赏师
  • 2026年有实力的园林绿化施工,产业园区园林绿化,园林绿化工程公司推荐及选择参考 - 品牌鉴赏师
  • 全屋定制如何兼顾美观与实用?2025年-2026年品牌推荐与评价,解决风格混乱与空间浪费痛点 - 十大品牌推荐
  • opencv 4.x 静态编译后 录像视频保存为h264
  • 2026年靠谱的Minitab软件代理商口碑推荐 - 品牌鉴赏师
  • 实用指南:逻辑回归解释
  • FORTIFY_SOURCE(编译时安全检查)