容量预估思考

1 背景

随着业务的快速成长,日访问量越来越高,除了对功能要求很高以外,对性能要求也越来越高。 在实际工作中,我们往往会被一些问题所困扰。

1)线上服务容量是多少?性能痛点在哪里? 可伸缩性(resilience)和可靠性(reliability)怎样?预先知道了系统的容量,做到心中有数,才能为最终规划整个运行环境的配置提供有利的依据。

2)新开发的功能是否满足性能指标? 重新修改的代码会不会带来性能问题? 对服务或工具的参数修改是否有效果(如jvm参数,mysql或solr配置等)? 如果在上线用前就能进行验证,那么不仅能极大降低部署时发生意外的概率,还能为性能优化提供指导。

2 现状

为尝试解决上述问题,我们在多个项目上进行过性能测试,使用过的方法主要分成三类。

方案 具体方式   优点 缺点
人为模拟请求 自己写代码或者使用简单的工具如httpload等去模拟用户请求进行测试   操作简单,能快速的得到cpu、mem、 load、 qps等极限值。 缺少真实用户交互行为,缺乏真实性
copy线上流量 使用tcpcopy工具实时copy线上流量到某台机器   操作简单,是真实线上请求,且对线上服务压力无影响 需要准备一套跟线上机器配置、依赖一致的独立环境,同时如果是服用线上的环境的话,一些写操作的请求被copy会有问题
线上流量切换 直接用线上的机器和环境,通过调整nginx配置参数,逐渐将要做压测的机器的权重增加,然后观察该机器各个指标性能   真实生产线流量,能把用户行为导向压测服务器,是最为真实的用户行为,能够把一些需要登陆,有用户交互行为的性能真实的反映出来 因为是用生产系统真实流量来模拟压测,无法得出最大值,如果阀值设置有误,也存在一定的风险。此外该性能测试也不能经常进行

3 存在的不足

尽管我们在性能测试上做过一些尝试,但还远远不够,存在以下不足。

3.1 性能测试指标和标准尚未完全确立

不同服务测试指标应该不同,相应的标准也不同,例如接入层服务和后端服务指标是不同的。如果我们能为各个服务制定类似如下的标准,以后再进行性能测试就有了参考依据。 随着服务的发展,这些标准也会随之相应改动,要求会越来越严格。


判断指标


不通过的标准


超时概率


大于万分之一


错误概率


大于万分之一


平均响应时间


超过100ms


0.99响应时间


超过200ms


qpm(每分钟处理的请求量)


小于2w


qpm波动范围(标准差)


正负3


cpu使用率


平均每核超过75%


负载(load)


平均每核超过1.5


jvm内存使用率


大于80%


gc平均时间


超过1s


fullgc频率


频率高于半小时一次


...


...

3.2 性能测试不够全面

图1 淘宝性能测试曲线(a点:性能期望值;b点:高于期望,系统资源处于临界点;c点:高于期望,拐点;d点:超过负载,系统崩溃)

        根据上述压力变化模型,淘宝网将性能测试分成狭义的4种类型:

a)性能测试:a点到b点之间的系统性能

定义:狭义的性能测试,是指以性能预期目标为前提,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。

b)负载测试 :b点的系统性能

定义:狭义的负载测试,是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到极限,例如某种资源已经达到饱和状态等。

c)压力测试:b点到d点之间

定义:狭义的压力测试,是指超过安全负载的情况下,对系统不断施加压力,是通过确定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试

d)稳定性测试:a点到b点之间

定义:狭义的稳定性测试,是指被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定,一般稳定性测试时间为n*12小时

我们现在的性能测试还没有那么全面,比如没有进行长时间的稳定性测试,长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。

3.3 性能测试手段缺乏

线上流量切换方法不能经常执行,copy线上流量目前只能将所有(包括读和写)流量拷贝过来,而自己写程序模拟用户请求又缺乏真实性。一种思路是自己实现测试程序将前一天的请求重新跑一遍,其核心在于控制请求频率,使其与之前请求频率曲线一致,从而达到近似模拟的目的。

3.4. 缺少性能测试自动化工具或平台

例如百度有个性能测试平台,有此平台后,可以方便地进行性能测试。其可以用于指导程序开发,使得在开发过程不仅关注功能,也关注性能,此外,性能测试纳入持续集成,每天出报表,每天都能知道自己服务的处理能力。

时间: 2024-11-03 21:31:00

容量预估思考的相关文章

性能测试/容量预估思考

1 背景 随着业的快速成长,日访问量越来越高,除了对功能要求很高以外,对性能要求也越来越高. 在实际工作中,我们往往会被一些问题所困扰. 1)线上服务容量是多少?性能痛点在哪里? 可伸缩性(resilience)和可靠性(reliability)怎样?预先知道了系统的容量,做到心中有数,才能为最终规划整个运行环境的配置提供有利的依据. 2)新开发的功能是否满足性能指标? 重新修改的代码会不会带来性能问题? 对服务或工具的参数修改是否有效果(如jvm参数,mysql或solr配置等)? 如果在上线

系统容量预估

系统容量预估 前几天聊过,pv 和并发 的概念,也大概解释了 并发,带宽等指标的计算.感兴趣的朋友,可以看看我前面那篇文章:<聊一聊PV和并发>.今天再来聊一聊容量预估. 电商公司的朋友,,这样的场景是否似曾相识:  运营和产品神秘兮兮的跑过来问: 我们晚上要做搞个促销,服务器能抗住么?如果扛不住,需要加多少台机器? 于是,技术一脸懵逼. 其实,这些都是系统容量预估的问题,容量预估是架构师必备的技能之一.所谓,容量预估其实说白了就是,系统在down掉之前,所能承受的最大流量.这个事技术人员对于

电商总结(六)系统容量预估

前几天聊过,pv 和并发 的概念,也大概解释了 并发,带宽等指标的计算.感兴趣的朋友,可以看看我前面那篇文章:<聊一聊PV和并发>.今天再来聊一聊容量预估. 电商公司的朋友,,这样的场景是否似曾相识:  运营和产品神秘兮兮的跑过来问: 我们晚上要做搞个促销,服务器能抗住么?如果扛不住,需要加多少台机器? 于是,技术一脸懵逼. 其实,这些都是系统容量预估的问题,容量预估是架构师必备的技能之一.所谓,容量预估其实说白了就是,系统在down掉之前,所能承受的最大流量.这个事技术人员对于系统性能了解的

redis容量预估

2.存储的数据内容:前端系统登录用到的Token,类型:key:string(32),value:string(32)3.业务场景存数据:用户登录验证成功后,ICORE-PAP后台产生Token(string)存储进redis,并设置数据过期时间 .读数据:用户携带Token登录时,ICORE-PAP后台去redis取Token,与用户传入的Token进行比对,比对成 功则允许后续访问.4.容量预估及依据容量预估:峰值12G/台依据:根据平时运行情况,各上游系统大概产生8千万Token/年.按k

【58沈剑架构系列】互联网架构,如何进行容量设计?

一,需求缘起 互联网公司,这样的场景是否似曾相识: 场景一:pm要做一个很大的运营活动,技术老大杀过来,问了两个问题: (1)机器能抗住么? (2)如果扛不住,需要加多少台机器? 场景二:系统设计阶段,技术老大杀过来,又问了两个问题: (1)数据库需要分库么? (2)如果需要分库,需要分几个库? 技术上来说,这些都是系统容量预估的问题,容量设计是架构师必备的技能之一.常见的容量评估包括数据量.并发量.带宽.CPU/MEM/DISK等,今天分享的内容,就以[并发量]为例,看看如何回答好这两个问题.

如何进行容量设计

一,需求缘起 互联网公司,这样的场景是否似曾相识: 场景一:pm要做一个很大的运营活动,技术老大杀过来,问了两个问题: (1)机器能抗住么? (2)如果扛不住,需要加多少台机器? 场景二:系统设计阶段,技术老大杀过来,又问了两个问题: (1)数据库需要分库么? (2)如果需要分库,需要分几个库? 技术上来说,这些都是系统容量预估的问题,容量设计是架构师必备的技能之一.常见的容量评估包括数据量.并发量.带宽.CPU/MEM/DISK等. 二,容量评估的步骤与方法 [步骤一:评估总访问量] 如何知道

微架构设计:微博计数器的设计

作者:@cydu 来源: http://qing.weibo.com/1639780001/61bd0ea133002460.html http://qing.weibo.com/1639780001/61bd0ea1330025sq.html 背景:  每一条微博的转发和评论背后都是一串串说不完的故事,但是今天主要讲的是 计数服务,计数服务详尽地记录着每条微博 被评论的次数 和 被转发的次数,当然也还有更多的喜怒哀乐都记录于此. 数据量:   微博总数量:  千亿级 而且每秒都在飞速增长中.每

(转)大型网站架构系列:电商网站架构案例(1)

大型网站架构是一个系列文档,欢迎大家关注.本次分享主题:电商网站架构案例.从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型.除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标). 根据实际需要,进行改造,扩展,支持千万PV,是没问题的. 本次分享大纲 电商案例的原因 电商网站需求 网站初级架构 系统容量估算 网站架构分析 网站架构优化 架构总结 电商网站案例,一共有三篇本篇主要说明网站的需求,网站初始架构,系统容量估算方法. 一.电商

商家端技术架构实践-曹振团

概述 架构愿景 架构目标 质量要求 架构原则 架构组成 架构关键点 业务架构 设计原则 业务架构图 现有项目 存在的问题 系统风险 应用架构 设计原则 常规做法 应用架构图 数据架构 设计原则 数据架构图 技术架构 设计原则 架构检验总结 监控 熔断测试 压测 演练 故障预测&风险评估 总结 概述 本文档的目的是描述商家端现有的技术架构体系,梳理其中存在的问题,并提出合理的技术架构图. 架构愿景 架构目标 高可用 整体系统的可用性99.985% 各子系统的可用性99.99% 整体系统的全年故障时