|
|
|
|
|
|
|---|---|---|---|---|
| 第一级 | 单接口压测 | 单点吞吐量验证 | JMeter、wrk | 无法暴露服务间调用问题 |
| 第二级 | 场景压测 | 用户操作序列模拟 | JMeter、Locust | 跨系统链路覆盖不全 |
| 第三级 | 全链路压测 | 完整链路+流量隔离 | ForceBot、阿里铂金 |
|
| 第四级 | 真实流量回放 | 1:1生产流量复刻 | GoReplay、TCPCopy |
|
-
第一代(HTTP短连接):Controller单点瓶颈,万级Agent下50%带宽消耗在连接建立上。并发上限:50万。 -
第二代(gRPC单向流):长连接解决建连损耗,但心跳、指令、上报仍共用单通道。并发上限:200万。 -
第三代(gRPC双向流+Disruptor):去中心化通信,Controller无状态化可任意扩缩,Agent按地域分片注册。并发上限:1000万+。
-
弱依赖致死:推荐服务缓存失效→RT升高→线程池占满→拖垮同一调用链上的购物车和结算。全链路压测才能暴露这种看似无关服务的连锁塌方。 -
连接池水桶效应:订单服务配置激进(200连接),支付服务配置保守(50连接)。支付先触瓶颈,队列堆积,订单还在抢连接——最终两个服务一起崩。 -
消息队列积压雪崩:峰值消息量10倍于日常,Kafka分区积压触发Rebalance,消费能力进一步下降,形成恶性循环。
-
常态化压测:每周核心链路,每月全量。与CI/CD集成,RT偏离基线20%自动告警。 -
大促军演:四轮递进——摸底→验收优化→故障注入→全真模拟。 -
迭代准入:每个DoD必须包含压测报告,新增接口上线前必须提供单接口基线。
|
|
|
|
|---|---|---|
| CPU飙高 | 找高CPU线程转十六进制 | top -Hp; jstack |
| 内存泄漏 | 堆dump后MAT分析最大对象 | jmap -dump:live |
| 线程池满 | 分析WAITING线程等待目标 | jstack -l |
| GC频繁 | FullGC耗时与频率 | -XX:+PrintGCDetails |
-
缩小范围:APM过滤慢调用,按RT降序,找耗时占比最高的3个接口。 -
隔离验证:对可疑接口单独加压,排除调用链叠加干扰。 -
火焰图定位:async-profiler生成CPU火焰图,直观定位热点函数。
-
OS层:vmstat 1,cpu us低、wa接近0 → 排除IO瓶颈 -
JVM层:jstack发现大量线程WAITING在RestTemplate.execute() → 优惠券服务超时 -
关闭优惠券过滤器重试:TPS仅提升至280 → 还有瓶颈 -
检查GC:jstat -gcutil显示FullGC频发,每次7165ms -
根因:-Xms1g -Xmx1g,聚合逻辑产生大量临时对象,1G堆被打满 -
优化:扩至4G堆,TPS→520,TP99→180ms
SELECT * FROM order_items WHERE order_id IN (1001,1002,...100)
-
代码层:减小锁粒度、异步化非核心依赖、批量操作开启rewriteBatchedStatements -
JVM层:大促场景Xms=Xmx避免动态扩缩停顿,低延迟选G1+MaxGCPauseMillis=200 -
数据库层:索引覆盖where/join/order by,敏感场景强制读主防延迟,单表超2000万行必须分表 -
架构层:Sentinel匀速排队削峰,降级开关真实演练,熔断恢复路径验证
-
劣化检测:常态化压测RT偏离基线20%自动告警 -
容量预估:基于基线QPS按流量倍数计算资源需求 -
SLA制定:P99延迟基线作为接口SLA的客观依据
E n d
声明:本文为51Testing软件测试网 半夏 用户投稿内容,该用户投稿时已经承诺独立承担涉及知识产权的相关法律责任,并且已经向51Testing承诺此文并无抄袭内容。发布本文的用途仅仅为学习交流,不做任何商用,未经授权请勿转载,否则作者和51Testing有权追究责任。如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:editor@51testing.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

