高并发系统实战课
徐长龙
前微博架构师、极客时间架构师
11663 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 30 讲
结束语&结课测试 (2讲)
高并发系统实战课
15
15
1.0x
00:00/00:00
登录|注册

24|性能压测:压测不完善,效果减一半

模拟线上真实情况
影子库方式解决
垃圾数据
预防数据库响应缓慢
数据库压力
受参与计算的数据量影响大的接口
分片架构的服务
临时缓存服务
并行请求依赖服务优化
难度较大
回放线上真实用户请求
模拟交叉复杂的使用情况
综合检测系统服务能力
降低业务数据污染风险
压测数据库
影响线上正常服务
产生垃圾数据
Linux环境配置
本地开发电脑压测
数据状态一致
避免缓存干扰
压测环境一致性
极端数据量测试
影响接口性能
热点分片问题
分片依据
低频率数据访问
优化效果
内网压力
并行请求依赖
串行阻塞等待
保证上线前的单元测试
全链路压测和流量回放测试
线上环境压测
极端测试
典型例子
压测QPS并不一定反映优化是否合理
性能压测的重要性
流量回放测试
全链路压测
影子库
线上压测
搭建压测环境
数据准备环节
数据量
分片架构
临时缓存服务
并行优化
不能盲目相信QPS结果
思考题
总结
全链路压测以及流量回放测试
线上压测及影子库
压测环境注意事项
压测与架构息息相关
性能压测

该思维导图由 AI 生成,仅供参考

你好,我是徐长龙。
之前我们讨论了很多高并发改造思路和设计。
高并发的系统很复杂,所以对这样的系统做并发优化也相当有挑战。很多服务的局部优化,不见得能真正优化整体系统的服务效果,甚至有的尝试还会适得其反,让服务变得不稳定。
在这种情况下,压测就显得更加重要了。通常来说,通过压测可以帮我们做很多事儿,比如确认单个接口、单台服务器、单组服务集群甚至是整个机房整体的性能,方便我们判断服务系统的瓶颈在哪里。而且根据压测得出的结果,也能让我们更清晰地了解系统能够承受多少用户同时访问,为限流设置提供决策依据。
这节课,我们就专门聊聊性能压测里,需要考虑哪些关键因素。

压测与架构息息相关

在压测方面,我们很容易踩的一个坑就是盲目相信 QPS 结果,误以为“接口并发高就等同于系统稳定”,但却忽视了系统业务架构的形态。
所以在讲压测之前,我们需要先了解一些关于性能与业务架构的相关知识,这能让我们在压测中更清醒。

并行优化

前面我说过,不能盲目相信 QPS 结果,优化的时候要综合分析。为了让你理解这一点,我们结合一个例子来看看。
我们常见的业务会请求多个依赖的服务处理数据,这些都是串行阻塞等待的。当一个服务请求过多其他服务时,接口的响应速度和 QPS 就会变得很差。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了性能压测的关键因素和注意事项,强调了性能与业务架构的密切关系。作者指出了盲目相信QPS结果可能导致系统稳定性问题,提出了针对不同架构情况的压测思路和优化建议。此外,文章还强调了数据量对接口性能的影响,以及在压测环境准备和搭建中需要注意的细节。作者建议在压测前后保持环境一致,避免缓存干扰,并确保数据状态一致。最后,文章强调了在Linux环境配置中的重要性,提出了一些常用的内核优化配置选项。总的来说,本文通过深入的案例分析和技术建议,为读者提供了全面的性能压测指南,有助于读者更好地理解和应用性能压测的关键技术。文章还介绍了线上压测及影子库、全链路压测以及流量回放测试等更综合的压测方式,为读者提供了更多压测方法的思路和建议。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《高并发系统实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 黄堃健
    老师, 在k8s,对流量打标志,然后不同的流量对应不同的服务

    作者回复: 你好,这个方式很好,缺点是需要我们所有项目框架或者代码上支持这个方式~因为被请求的服务请求其他依赖服务时需要透传带上这个标志

    2024-02-29归属地:广东
    2
  • 若水清菡
    如何保证上线前的单元测试里,测试生产的数据不会污染线上环境? 1.上线前的单元测试环境不允许连接线上环境,只允许连接测试环境 2.单元测试从配置中心读取测试配置,线上环境从配置中心读取线上配置 3.单元测试中做特别的header标记,在网关这边识别来着单元测试的请求并将请求转发到测试环境中

    作者回复: 你好,若水清菡,这个思路很好,很全面,甚至单元测试环境单独起个临时的数据库用于测试

    2023-01-26归属地:北京
  • LecKey
    在代码中对“单元测试里”做个标识,是单元测试的数据进入单独 “影子库”中。

    作者回复: 你好,LecKey,确实是个好方法~

    2022-12-23归属地:北京
    3
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部