性能工程高手课
庄振运
Facebook 性能优化和容量管理高级专家
24631 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
性能工程高手课
15
15
1.0x
00:00/00:00
登录|注册

25 | 如何在生产环境中进行真实的容量测试?

一起来看两个生产环境的数据
在生产环境中进行真实场景的压力测试
性能工程实践

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

你好,我是庄振运。
从今天开始,我们进入新的模块:性能工程实践。在这一模块中,我会讲述在实际生产环境中应用性能工程的场景、案例。这些场景和案例都是针对大规模互联网服务,是在解决实际性能问题后总结的经验。
今天我要讲的主题是“在生产环境中进行真实场景的压力测试”。这来源于我对 LinkedIn 公司生产实践的总结。
LinkedIn 为超过 5.9 亿用户提供服务,在性能优化的过程中,经常会遇到这类问题:一个服务可以承受的最大 QPS 是多少?要满足 100K QPS 的服务需求,我需要多少服务器?……
怎么解决这些问题呢,有一个大招就是在生产环境中进行真实的容量测试。
关于这个实践的详细方案和技术细节,我们曾经发表过一篇研究论文(IEEE ICWS),并且很荣幸地获得了 IEEE 最佳论文奖,推荐你去读一读。
今天我就带你从这个场景的源头出发,一步步探索到最后的具体落地方案。

为什么需要在生产环境中进行容量测试?

既然我们要解决一个具体的问题,那我们一定要先问个“为什么”。
为什么要在生产环境中进行容量测试呢?要回答这个问题,我们还得再往前追问,为什么说真实的容量测试很重要呢?
我想这个问题不难回答,你应该已经有自己的答案了。
我们都知道,一个在线互联网公司的存活和发展,靠的是它提供的互联网在线服务,自然也就依赖于这些服务的性能和稳定性。要保证每个服务都能够稳定地运行,我们必须为之提供足够的服务容量,比如适当数量的服务器。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

LinkedIn的文章《如何在真实生产环境中进行容量测试?》介绍了在线互联网服务容量性能评估的重要性和挑战,以及他们采用的解决方案RedLiner。文章强调了在生产环境中进行容量测试的必要性,因为非生产环境的测试结果可能不准确,而生产环境中的测试又面临着重定向流量可能影响真实客户的挑战。为了解决这些挑战,LinkedIn提出了RedLiner解决方案,包括核心控制器LiveRedliner、重定向流量的TrafficRedirector、收集性能数据的PerfCollector和分析性能数据的PerfAnalyzer。RedLiner通过动态地调整线上流量,直到让被测系统临近超载状态,从而获得准确的单位服务容量。文章详细介绍了RedLiner的具体操作流程,包括初始重定向数量的决定、总体测试时间的确定以及调整重定向百分比的步距等。通过该解决方案,读者可以了解到在生产环境中进行容量测试的重要性以及LinkedIn的实践经验,为在线服务容量性能评估提供了实用方法和重要参考。文章还分享了LinkedIn在生产环境中运行RedLiner的实际数据,展示了系统的特点和测试过程,为读者提供了直观的感受和实际案例。文章最后提出了思考题,鼓励读者思考自己公司的容量测试解决方案,并分享讨论。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能工程高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 许童童
    有个问题,生产环境流量不多或者根本就没有流量,这个时候怎么办呢?

    作者回复: 如果说实际生产流量不够驱动一个SUT,这种情况就只能用模拟流量了(比如人工产生流量去驱动)。

    2020-01-22
    2
  • 黄海峰
    “模仿实现一个一点也不难”。。。我被高估了,后面加餐希望多点技术细节介绍

    作者回复: :)。这个具体实现要根据实际的系统,因系统而异。关键是搞清楚负载均衡(就是来了一个流量,让哪个服务器处理),然后修改均衡机制(就是让它“不均衡”)。要小心别弄砸,因为负载均衡很关键,而且最好自动化。

    2020-01-22
    1
  • lewis99
    你好,有个疑问:服务中有不同的接口,每个接口性能是不一样的,那是要针对每个接口进行容量规划和流控吗?

    作者回复: 我的建议是看实际生产环境中的使用情况,并且根据使用的接口,以及使用数量的分布来进行响应的规划。

    2020-03-29
  • 看评论回答是直接引流而非复制,有几个问题? 1:为什么不复制流量呢? 2:线上直接引流,线上的流量有峰谷之分,是否只针对峰流来测试? 3:流量不够,人工模拟,针对这种流量还需要拦截,不让响应吧?这个怎么做的?此时数据也会失真嘛? 4:如果针对淘宝或京东,这种大促时的流量评估,因为是发生在未来的,这种直接引流的方式,流量应该是不足的,这种怎么来弄?还是人工模拟吧? 😁 我们主要是各条线线下性能压测+全链路线上憋单压测两者结合。

    作者回复: 问题较多,我尽量回答: 1. 复制的话,很难准确复制。比如写入数据库的流量,复制很难做。 2. 这个到无所谓,只要能让被测系统Stress就行。 3. 不是不让响应,只是重定向。 4. 要点是得到单位容量的能力,有了这个,再加上整体流量预测,就知道所需容量了。

    2020-03-11
  • 海华(海菜)
    zhenyun老师,有几个细节问题: 1. 重定向流量是克隆流量还是直接也响应生产请求,响应生产请求意味着这个系统也是生产一部分 2. SUT应该是固定的容量例如N,如果迁移M%的流量过去导致容量达到预警/瓶颈,就意味着线上容量需求是 N / (M/100)(例如SUT容量是5个服务单位,迁移5%流量导致,意味着线上应该用5/0.05 = 100)是吗? 感谢

    作者回复: 1.是直接的生产请求,不是克隆浏览。 2.理解是对的。

    2020-02-15
  • 徐豪
    这一块国内一般称之为『全链路压测』,我也设计主导过,采用的基于日志的流量回放方式
    2020-04-28
    2
  • 争光 Alan
    测试单机性能估算总的资源和性能关系也有疑惑 单机和分布式系统还是差异比较大的,从单机扩到两台的时候就会有比如分布式锁,某个服务特别忙,数据库扩后跟不上等等,感觉从单点轮到1k差异会更大 这一块一般是怎么处理?
    2023-02-01归属地:上海
  • 争光 Alan
    真实流量感觉差异会比较大,比如活动,热点事件,都会导致某个特定场景的请求链路流量方大,这一块怎么把控测试结果就能支撑目标qps呢? 还有个疑惑:比如我要做个活动,预计100kqps,线上感觉搞不到数据(活动还没开始)
    2023-02-01归属地:上海
  • 争光 Alan
    如果这么压测的话,比如测试结果很差,怎么分析原因呢
    2023-02-01归属地:上海
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部