高并发系统设计40问
唐扬
美图公司技术专家
立即订阅
9279 人已学习
课程目录
已更新 41 讲 / 共 45 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么你要学习高并发系统设计?
免费
基础篇 (6讲)
01 | 高并发系统:它的通用设计方法是什么?
02 | 架构分层:我们为什么一定要这么做?
免费
03 | 系统设计目标(一):如何提升系统性能?
04 | 系统设计目标(二):系统怎样做到高可用?
05 | 系统设计目标(三):如何让系统易于扩展?
06 | 面试现场第一期:当问到组件实现原理时,面试官是在刁难你吗?
演进篇 · 数据库篇 (5讲)
07 | 池化技术:如何减少频繁创建数据库连接的性能损耗?
08 | 数据库优化方案(一):查询请求增加时,如何做主从分离?
09 | 数据库优化方案(二):写入数据量增加时,如何实现分库分表?
10 | 发号器:如何保证分库分表后ID的全局唯一性?
11 | NoSQL:在高并发场景下,数据库和NoSQL如何做到互补?
演进篇 · 缓存篇 (6讲)
12 | 缓存:数据库成为瓶颈后,动态数据的查询要如何加速?
13 | 缓存的使用姿势(一):如何选择缓存的读写策略?
14 | 缓存的使用姿势(二):缓存如何做到高可用?
15 | 缓存的使用姿势(三):缓存穿透了怎么办?
16 | CDN:静态资源如何加速?
加餐 | 数据的迁移应该如何做?
演进篇 · 消息队列篇 (6讲)
17 | 消息队列:秒杀时如何处理每秒上万次的下单请求?
18 | 消息投递:如何保证消息仅仅被消费一次?
19 | 消息队列:如何降低消息队列系统中消息的延迟?
20 | 面试现场第二期:当问到项目经历时,面试官究竟想要了解什么?
用户故事 | 从“心”出发,我还有无数个可能
期中测试 | 10道高并发系统设计题目自测
演进篇 · 分布式服务篇 (9讲)
21 | 系统架构:每秒1万次请求的系统要做服务化拆分吗?
22 | 微服务架构:微服务化后系统架构要如何改造?
23 | RPC框架:10万QPS下如何实现毫秒级的服务调用?
24 | 注册中心:分布式系统如何寻址?
25 | 分布式Trace:横跨几十个分布式组件的慢请求要如何排查?
26 | 负载均衡:怎样提升系统的横向扩展能力?
27 | API网关:系统的门面要如何做呢?
28 | 多机房部署:跨地域的分布式系统如何做?
29 | Service Mesh:如何屏蔽服务化系统的服务治理细节?
演进篇 · 维护篇 (7讲)
30 | 给系统加上眼睛:服务端监控要怎么做?
31 | 应用性能管理:用户的使用体验应该如何监控?
32 | 压力测试:怎样设计全链路压力测试平台?
33 | 配置管理:成千上万的配置项要如何管理?
34 | 降级熔断:如何屏蔽非核心系统故障的影响?
35 | 流量控制:高并发系统中我们如何操纵流量?
36 | 面试现场第三期:你要如何准备一场技术面试呢?
实战篇 (1讲)
37 | 计数系统设计(一):面对海量数据的计数器要如何做?
高并发系统设计40问
登录|注册

32 | 压力测试:怎样设计全链路压力测试平台?

唐扬 2019-12-06
你好,我是唐扬。
经过两节课的学习,我们已经搭建了服务端和客户端的监控,通过监控的报表和一些报警规则的设置,你可以实时地跟踪和解决垂直电商系统中出现的问题了。不过,你不能掉以轻心,因为监控只能发现目前系统中已经存在的问题,对于未来可能发生的性能问题是无能为力的。
一旦你的系统流量有大的增长,比如类似“双十一”的流量,那么你在面临性能问题时就可能会手足无措。为了解决后顾之忧,你需要了解在流量增长若干倍的时候,系统的哪些组件或者服务会成为整体系统的瓶颈点,这时你就需要做一次全链路的压力测试。
那么,什么是压力测试呢?要如何来做全链路的压测呢?这两个问题就是本节课重点讲解的内容。

什么是压力测试

压力测试(简称为压测)这个名词儿,你在业界的分享中一定听过很多次,当然了,你也可能在项目的研发过程中做过压力测试,所以,对于你来说,压力测试并不陌生。
不过我想让你回想一下,自己是怎么做压力测试的?是不是像很多同学一样:先搭建一套与正式环境功能相同的测试环境,并且导入或者生成一批测试数据,然后在另一台服务器,启动多个线程并发地调用需要压测的接口(接口的参数一般也会设置成相同的,比如,想要压测获取商品信息的接口,那么压测时会使用同一个商品 ID)。最后,通过统计访问日志或者查看测试环境的监控系统,来记录最终压测 QPS 是多少之后,直接交差?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《高并发系统设计40问》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(10)

  • 阿土
    我所在的团队,因为没有资源提供影子库,所以一直做不起来真正的全链路压测。规划的很美好,就因为没有存储隔离,所有的东西都成了泡影。另外,业务系统领导对于系统改造支持压测也不支持,这就造成无法实施。所以目前的全链路压测都是固定的几个账号,几个商品。得到的结果可信度也有限

    作者回复: 其实如果没有做影子库,可以只做下行流量的压测(读请求),一般读多写少,其实也可以大致反应你的系统的容量

    2019-12-06
    4
  • 天天向善
    是不是我这样理解,购买商品下单要存储到影子库,第三方支付用mock,支付的回调也mock

    作者回复: 是的~

    2019-12-06
    2
  • 电光火石
    老师你好,有个问题,压测的流量和正常的流量是否需要分流,比如说正常的访问把他分流到某几台机器上,压测的流量把他分流道几台机器上,做物理隔离?
    做的话,因为后面都是一堆的服务,如果每个服务都做分流,复杂度还是蛮高的;不做的话,是否会相互影响,尤其影响到线上流量?
    谢谢了!
    2019-12-17
  • 电光火石
    线上做压测,除了技术问题外,还有观念问题,很多人不敢做,怕出事情背锅
    2019-12-14
  • 新世界
    老师:流量复制和重放后的响应对比有什么工具推荐吗?还是自己去写解析?
    2019-12-13
  • 新世界
    线上真实环境也是用goreplay做的流量拷贝吗?我最近也在做,但是用goreplay cpu使用率瞬间很高,担心影响线上真实系统,我想请教下老师,你们线上真实环境也是用goreplay 做流量拷贝吗?启动goreplay后也是cpu使用率很高吗
    2019-12-13
  • 何磊
    唐老师好,我有如下问题:
    1. 链路压测的时候是一次压一个接口比如商品详情,还是一次压一个业务比如下单。
    2. 如果我想全链路压一个业务(下单)这就涉及到上下游接口的依赖,如:先加购物车,再去下单结算。甚至还有用券等逻辑。如果仅仅是拷贝流量应该无法完成。是否还需要一个其他的机制呢?

    作者回复: 1. 是针对一个业务来压测
    2. 我理解可以在压测时指定一些接口的依赖关系,说实话,我没有遇到过类似的问题~

    2019-12-09
  • 你净瞎说~
    老师,有个问题想请教一下,关于文中说的将压力测试产生的数据写入到影子库,redis中的key用前缀区分,这是需要改代码做兼容吗?我们现在的做法是代码兼容,比如发送短信,开了mock之后,就永远返回发送成功。

    作者回复: 是需要改代码兼容的~

    2019-12-06
  • 你净瞎说~
    先搭建一套和生产环境一模一样的性能测试环境,然后造数据,针对一些第三方调用,一键mock ,最后使用Jmeter直接压就完事了
    2019-12-06
  • gogo
    老师您好,有个问题:在线上压测的结果 假如是2w qps,但这只是压测流量的数据结果,真实流量没有考虑进来,这样压测怎么反应真实性能呢?

    作者回复: 如果是拷贝的流量,并且是在线上系统压测,其实是有比较大的参考意义的

    2019-12-06
收起评论
10
返回
顶部