大厂如何做性能测试

发布时间:2026/7/18 5:29:08

大厂如何做性能测试 先简要回答这个问题大厂如何做性能测试的大厂的性能测试工程师重点关注日志、监控和压测平台。从服务端日志出发拿到的是100%准确的真实画像我们以淘宝首页为例分析并测试后端压力的标准工作流主要分为三个阶段识别找出来→ 量化算清楚→ 验证压明白。1. 识别如何找出“真正产生压力”的API不要猜直接从服务端视角获取真相。以下是按优先级排序的分析手段P0网关/Nginx 访问日志最权威所有前端请求必经网关这里是全量真相的来源。做什么对首页域名的 access log 做聚合分析看什么各 API Path 的 QPS 排名Top 20 接口通常贡献 80% 的压力各接口的平均 RT 和 P99 RT高耗时接口即使QPS不高也可能耗尽线程池错误率分布5xx/4xx 突增的接口可能是瓶颈点工具SLS/ELK/ClickHouse SQL聚合或内部监控平台P1APM / 链路追踪看穿透深度网关只能看到入口看不到一个请求背后调了多少下游服务。做什么通过 Trace ID 追踪首页核心接口的完整调用链看什么扇出系数/api/home/feed一次调用是否串联了推荐、广告、库存、价格等 5 个微服务数据库/缓存命中比哪些接口频繁穿透缓存打到DB同步 vs 异步是否有串行调用导致RT叠加价值识别“表面QPS不高但内部放大效应极强”的隐藏压力点P2业务监控 RUM 补充补全盲区服务端业务指标订单创建速率、搜索词热度、加购频次——这些才是驱动API压力的根因RUM 数据确认真实用户的操作路径比例多少人只浏览不点击多少人会触发懒加载用于修正纯服务端日志的偏差关键原则二八定律淘宝首页可能有数百个API但对后端产生实质压力的通常只有 10~30 个核心接口。分析的目标不是穷举而是精准锁定 Top N。2. 量化如何建立压力模型找到接口后不能直接拿峰值QPS去压需要建立一个可执行的流量配比模型维度分析方法产出基准流量取近7天同时段网关日志P95 QPS日常基线峰值预估结合大促预案、历史同期倍数、业务增长系数目标QPS流量配比各核心接口QPS占总QPS的百分比压测脚本权重数据特征参数分布热门商品ID vs 长尾、读写比、缓存命中率造数据策略依赖拓扑每个接口背后的下游服务、DB、缓存、MQ环境准备清单示例产出淘宝首页简化版目标模拟大促峰值 10万 QPS 首页访问 流量配比 ├── /api/home/feed 35% → 35,000 QPS (读密集, Redis缓存) ├── /api/search/hot 20% → 20,000 QPS (读密集, ES查询) ├── /api/recommend 15% → 15,000 QPS (计算密集, GPU推理) ├── /api/cart/badge 10% → 10,000 QPS (写敏感, DB强一致) ├── /api/user/session 8% → 8,000 QPS (鉴权, Token校验) └── 其他长尾 12% → 12,000 QPS (按比例分配) 数据要求 - feed接口热key占比30%冷key占比70%模拟真实缓存穿透率 - cart接口使用真实用户Token池避免鉴权层被绕过3. 测试如何科学地施加压力有了模型执行压测时遵循分层递进原则第一步单接口基准测试目的摸清每个核心接口的单机容量上限和拐点方法固定其他条件逐步加压单个接口记录 QPS-RT 曲线产出/api/home/feed单机极限 2000 QPSP99 200ms超过后RT急剧上升第二步混合场景压测目的验证多接口并发时的资源竞争和相互影响方法按流量配比同时施压所有核心接口关注点CPU/内存/连接池/线程池是否出现争抢某个接口劣化是否拖垮全局第三步全链路仿真压测(普通公司很难实现)目的在接近生产的环境中验证整体容量关键措施影子库/表压测数据写入隔离存储不污染线上流量染色压测请求带特殊Header全链路透传中间件识别并路由到影子环境渐进式加压从10%目标QPS开始每5分钟递增10%观察系统表现停止条件RT超标、错误率0.1%、核心资源80%、业务指标异常第四步故障注入 弹性验证压测不仅是测“能扛多少”更是测“扛不住时怎么降级”在压测过程中主动注入故障Redis节点宕机、下游服务超时、DB主从切换验证限流、熔断、降级预案是否按预期生效总结一张图看懂全流程服务端日志/APM/RUM ↓ 识别 Top N 压力接口 ↓ 建立流量配比模型 数据策略 ↓ ┌─────────────────────┐ │ 单接口基准 → 混合场景 → 全链路仿真 → 故障演练 │ └─────────────────────┘ ↓ 输出容量基线 / 瓶颈报告 / 扩容方案 / 降级预案

相关新闻