性能测试的几种业务模型设计

一个访问量达到百万级别的门户网站及奥运会订票系统等这中用户数较多的系统,进行性能测试是必须的。要不就和产品演示会上出现的笑话一样,风险投资商提出的问题是这个网站能支持多少用户同时上线,项目经理居然说没有进行这方面的测试。全场哗然。。。。

  对于性能测试的第一步是怎么去根据业务的实际模型分析出具体的测试场景及性能测试的指标。

  一、 性能测试业务逻辑理解的一些基本概念

  1、负载测试压力测试的区别:负载测试在于确定最终满足系统指标的前提下,系统所能承受的最大负载测试,压力测试的目标则在确定什么条件下系统性能处于失效状态。

  2、吞吐量(Throughput):指单位时间内处理的客户段请求数量,直接体现软件系统的性能承载能力。

  3、并发(Concurrency):多个同时发生的业务操作。例如100个用户同时点登录21CN邮箱和同时在线人数不一样。比如说21CN 通行证用户登录的有1万个可能只有20%的人在看博客,10%的人在看相册,30%的人在查看邮件,10%的人在查看播客,10%的人在看视频点 播,10%的人在逛论坛等等

  但是同时在线人数就是1万,并发用户就是针对每个系统的具体人数。

  二、几种常见的业务模型设计

  1、e家广告系统:

  (1)具体的业务参数要求:

  系统要达到4000万日均PV,则需要平台可以处理4000并发/秒。根据选中的服务器的性能,处理能力约为2000个HTTP并发/秒或1000个流媒体并发/秒。假设这4000万PV中有图片的PV占3000万,流媒体的PV占1000万,则需要WEB服务器及流媒体服务器各两台。

  (2)具体的测试设计方法:

  (a)平台的处理能力与要达到的日均PV的能力的计算关系为:

  参数说明:

  X:表示整个系统的日均PV值,单位为:万PV/天

  m:平台最大有效并发数(即用来服务于广告物料显示的并发数),单位为:并发/秒,每小时是3600秒,即每个小时处理的并发数为3600m并发,即0.36m万并发/小时。

  y:非高峰时期的平均并发数与平台最大并发数的比例,0

  Y:高峰期(平台达到最大并发数的70%,平台负载超过70%以后,将变得不稳定)小时数,0

  那么:

  日均PV=高峰期并发数*高峰期小时数+非高峰期平均并发数*(24-高峰期小时数)

  即:

  X=0.7*0.36mY+y*0.36m*(24-Y)

  即最后结论:

  X=(0.252Y+8.64y-0.36yY)*m

  根据经验值,Y=3,y=30%时,m/X=0.33。而m是平台最大有效并发数,即用来服务于广告物料显示的并发数,而对于每次广告物料的显示,客户端还有访问其它资源如JS代码等,假设每一次广告物料的访问会有伴随另外2个资源的访问。

  那么平台支撑的总的并发数与需要达到的日均PV的比大约为0.33*3=1。

  (b)实际测试模型设计中结果:

  对广告链接页面的并发用户数只需要达到N1=0.33*40000000*0.7/24*0.3*3600=356个

  对于流媒体服务器并发用户数:N2=10000000*0.7/24*0.3*3600/2=135个

  对于图片服务器并发用户数:N3=30000000*0.7/24*0.3*3600/2=405个

  2、集团邮箱:

  (1)具体的业务参数要求:集团邮箱支持支持2000万用户,对性能有要求的操作有邮箱登录,读信,翻页,发邮件(分别是8秒内,2秒内,2秒 内,5秒内)。所有的操作均返回HTTP200的状态代码。其中服务器资源分别是登录5台机器(连接PASSPORT),收发邮件5台(不包括POP收发 信),其它邮件处理服务器5台,pop/smtp服务器5台。

  (2)具体的测试设计方法:具体的设计2000万个用户登录时间大概在会在8点到下午18点前操作,而该类业务模型满足80~20原则,比如 80%的业务会在20%的时间内处理。则登录的并发用户数设计成多少好呢? VUlogin=20000000*80%/(10*20%*3600*5) 其它事物可以以此类推。

  (3)当然如果业务在要求吞吐量的时候,就要更根据吞吐量来设计性能瓶颈所需要的并发用户数这在我们21CN网站和电子商务网站中经常出现。这 里引进一个公式VU=F /R*T(VU并发虚拟用户数,F吞吐量,T性能测试时间,R每个VU的请求数量)举例说明(某网站的吞吐量为90亿KB,每个用户每秒50万kb,运行 时间30分钟设计出来的每秒用户数VU=9000000000/(500000*30*30))

  (4)如办公系统(业务比较频繁的系统):每天内的一些典型用户固定可以考虑采用一种更准确的计算并发用户数的的方法。公式引 进:C=N*L/T,C1=C+ (C是平均并发用户数,N是login session的数量,L是login session的时长,T是考察的时间长度,C1是最高峰值)(*这里的用户是指明确每天都要使用的系统的大概数量来自需求, 而这里的用户都是当做一个典型的用户来分析就是登录后会进行正常的流程操作)如21CNEIP每天有320个典型用户访问,系统平均时间为4小时,在一天 内用户使用该系统的时间都在8小时内。得出C=320*4/8,C1=C+3 (5)针对这几种模式做一些归纳无论那种模型都是来源于需求根据需求的实际模型是最真实的也是最有效的性能测试模型,在没有典型用户的前提下选择2-8原 则(在测试环境中 要考虑到等价这个概念就是测试环境服务器数量没有实际环境哪么多的时候要折算过来),有典型用户的情况下选择最大并发数的计算方法,在要求有吞吐量的情况 下用吞吐量的计算方法(但是吞吐量的数据要采用上一次测试或者经验值中没有突破系统瓶颈的部分数据要不结果不准确,其中每秒事物数取的是平均值)

  三、其它值得注意部分

  1、设置测试场景中并发用户为每隔一段时间增加X个虚拟用户(预热,RAMP UP设置),与同时加载所有的并发用户的测试结果不同,实际的测试中要根据具体业务情况设计。另外实际的数据库记录数和网络环境等都会影响到测试结果。

  2、建议在实际的测试过程中能多次测试取平均值。

  3、性能测试的”拐点论”:产生拐点的情况是性能测试产生某种瓶颈,主要原因是某种资源达到了极限。此时表现为随着压力的增大,系统性能出现急剧下降。

  4、性能测试的系统能力验证: (a)是系统稳定性的一个基本要求,通常表现为系统在要求的平均并发用户下服务器的CPU平均使用率不高于75%,内存的使用率不高于75%。(b)系统 在要求的并发用户数达到峰值情况下服务器的CPU平均使用率不高于95%,内存的使用率不高于90%。(c)系统能在高于实际系统运行压力1倍的情况下, 稳定的运行72小时。

  5、为分清各个不同事物的响应时间请务必在多事物的脚本中添加事物以便区分,请在要用到多个帐户或者多个用户的迭代或者循环操作的时候请务必进行参数化(很多系统都限制了同一帐户在多长时间的操作,或者防止数据冲突)。

时间: 2024-12-24 20:15:06

性能测试的几种业务模型设计的相关文章

C++的一种业务分发方案(另类的工厂模式)

在C++中,传统的业务分发,总要写一大串的switch-case,而且每次增加新业务时,都要在原有的switch-case里加一个分支,这就违反了设计模式中的开放封闭原则, 以下这种方案,就完全去除了switch-case,每当要添加业务模块时,只要写一个TEST_MODULE(index, name)就可以了. 思路很简单,直接上代码: #include <iostream> #include <string> #include <map> using namespa

性能测试的几种常见方法

性能测试的几种常见方法(转) 负载测试:负载测试是用户观点的测试行为.简单说来就是负载测试就是让系统在一定得负载压力下进行正常的工作,观察系统的表现能否满足用户的需求. 用户的需求从何而来?需求分析--特指性能测试的需求分析.由此看来需求分析是相当重要的. 负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现. 负载测试的预期结果是用户的性能需求得到满足.此指标一般体现为响应时间.交易容量.并发容量.资源使用率等. 负载测试也是最常用的性能测试方法,因此也有不少人将负载测试混淆为性能测试

提供一种业务系统非核心信息不连表查询解决方案

一种业务系统非核心信息不连表查询解决方案 本文针对java开发且采用前后端分离的开发模式,非java开发可能作用不大.同时数据库以mysql为例,部分表述只做示例,并非严谨的mysql语句. 普通的业务系统开发过程中,下面描述的这种需求应该是比较常见的.一个申请单,需要显示申请人名字,审核人名字. 这里涉及到两张表:申请单(t_apply), 用户(t_user),后台数据表我们可能会这么设计: // 方案一 t_apply( apply_id, apply_no, *** apply_user

性能测试通过几种方式造数据

本文说的数据量主要包括基础数据量(或者叫历史数据量.垫底数据量.数据库中已有的数据量)和参数化数据量,数据量在性能测试中起到非常重要的作用.对于在数据库中只有几条记录和有几亿条记录里面查询信息,那么结果肯定相差非常大的,随着业务量的增长,记录也越来越多,因此在性能测试过程中,需要保持跟生产上相同级别的数据量.生产系统中业务中使用不同的数据.那么我们在测试的时候需要考虑参数数据量的大小和数据分布的问题. 如果基础数据量跟生产环境的基础数据量不在同一个数量级上,将会导致相关指标例如响应时间比生产上快

IPTV系统的VOD与TV业务性能测试

IPTV的未来发展正在成为业界的焦点话题.据市场研究公司MRG的统计,全球IPTV用户将由2004年的200万增加至2010年的2000万,预计全球IPTV市场2005-2010年的复合增长率为102%. 在国内,IPTV产业尚处于试验阶段,中国电信.中国网通.中国铁通正在积极开展IPTV试验. 目前已有很多设备厂家提供IPTV系统平台和设备,业界公认IPTV业务包含两种基本业务:VOD点播和TV直播.国内IPTV的发展如火如荼,对于 IPTV系统的测试也亟需进行规范,本文拟将对IPTV系统的这

一种M2M业务的架构及实现M2M业务的方法

技术领域 [0001] 本发明涉及通信技术领域,尤其涉及一种M2M业务的架构及实现M2M业务的方法. 背景技术 [0002] 随着通信技术的飞速发展以及通信技术与互联网技术的进一步融合,移动业务以及移动互联网技术普及率越来越高.目前,在大部分发达国家,移动通信渗透率甚至达到100%,这就导致了移动用户的增速越来越慢,并且全球移动运营商基本都面临着这一问题.为此,运营商们开始寻找移动通信领域新的增长点.另一方面,随着互联网技术的崛起, 尤其是互联网技术与移动通信技术相融合产生的移动互联网技术的兴起

GPRS GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可用的一种移动数据业务,属于第二代移动通信中的数据传输技术

GPRS 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可用的一种移动数据业务,属于第二代移动通信中的数据传输技术.GPRS可说是GSM的延续.GPRS和以往连续在频道传输的方式不同,是以封包(Packet)式来传输,因此使用者所负担的费用是以其传输资料单位计算,并非使用其整个频道,理论上较为便宜.GPRS的传输速率可提升至56甚至114Kbps.[1]

基于业务封装API进行Redis服务性能测试记录

背景 开发方面给予redis开源客户端做了二次封装,且做了reids集群部署:ld要求对redis服务性能做一次摸底测试: 测试需求 单实例的读写压力极限 单机的读写压力极限(可能瓶颈在网卡) proxy单实例的压力极限 proxy单机的压力极限 主备的切换的可靠性测试 ------------ 本次未做 平滑迁移的有效性  ------------ 本次未做 迁移对访问性能的影响(可选) ------------ 本次未做 从上述开发提出的需求看出,本次是以性能验证为主要目的的一次测试:运行场

性能测试(四)应用领域

大概说说性能测试的五种应用领域吧,可能纯文字内容太多,没耐心的话,可以跳过不看...    ----参考书籍<软件性能测试过程详解与案例剖析> 概括来说,可以将性能测试的应用领域划分为下面五个不同领域: ·能力验证 ·规划能力 ·性能调优 ·瓶颈发现 ·性能基准比较 一.能力验证 能力验证是性能测试中最简单也是最常见的一个应用领域.一个典型的能力验证的问题会采取这样的描述方式:某系统能否在A条件下具有B能力? 能力验证领域的特点与性能测试的特点非常接近: ①要求在已确定的环境下运行 只有在一个