性能测试中如何确定并发用户数

近日,Hitest在其技术博客上发表了一篇题为《并发用户数与TPS之间的关系》的文章,文章对TPS和并发用户数做了详细的解释,并针对性能测试中系统性能的衡量维度和测试策略给出了自己的建议。Hitest是阿里巴巴技术质量部提供的一款Web&移动应用安全测试SaaS化服务平台,旨在帮助开发者简单快捷地进行安全测试。
  在文中,作者首先对并发用户数和TPS做了解释:
  并发用户数:是指现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal User)。并发用户数和注册用户数、在线用户数的概念不同,并发用户数一定会对服务器产生压力的,而在线用户数只是 ”挂” 在系统上,对服务器不产生压力,注册用户数一般指的是数据库中存在的用户数。
  TPS:Transaction Per Second, 每秒事务数, 是衡量系统性能的一个非常重要的指标。
  作者认为现在很多从业人员在做性能测试时,都错误的认为系统能支撑的并发用户数越多,系统的性能就越好。要理解这个问题,首先需要了解TPS和并发用户数之间的关系:
  TPS就是每秒事务数,但是事务是基于虚拟用户数的,假如1个虚拟用户在1秒内完成1笔事务,那么TPS明显就是1;如果某笔业务响应时间是1ms,那么1个用户在1秒内能完成1000笔事务,TPS就是1000了;如果某笔业务响应时间是1s,那么1个用户在1秒内只能完成1笔事务,要想达到1000TPS,至少需要1000个用户;因此可以说1个用户可以产生1000TPS,1000个用户也可以产生1000TPS,无非是看响应时间快慢。
  也就是说,在评定服务器的性能时,应该结合TPS和并发用户数,以TPS为主,并发用户数为辅来衡量系统的性能。如果必须要用并发用户数来衡量的话,需要一个前提,那就是交易在多长时间内完成,因为在系统负载不高的情况下,将思考时间(思考时间的值等于交易响应时间)加到脚本中,并发用户数基本可以增加一倍,因此用并发用户数来衡量系统的性能没太大的意义。
  作者最后做了综述,他认为在性能测试时并不需要用上万的用户并发去进行测试,如果只需要保证系统处理业务时间足够快,几百个用户甚至几十个用户就可以达到目的。据他了解,很多专家做过的性能测试项目基本都没有超过5000用户并发。因此对于大型系统、业务量非常高、硬件配置足够多的情况下,5000用户并发就足够了;对于中小型系统,1000用户并发就足够了。
  性能测试需要一套标准化流程及测试策略,在实际测试时我们还需要考虑其它方面的问题,比如如何模拟成千上万来自不同地区用户的访问场景、如何选用合适的测试软件。性能测试对一些小的团队来说并非易事,不过前段时间阿里云发布了性能测试服务PTS,PTS可以帮助开发者通过分布式并发压力测试,模拟指定区域和指定数量的用户同时访问,提前预知网站承载力。这就是云计算给我们带来的便利。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-25 10:30:02

性能测试中如何确定并发用户数的相关文章

Apache中配置最大并发用户数 tcp连接设置

 Apache在配置编译时可以自主的选择想要使用的MPM模块,使用./configure --with-mpm=MPM命令.我们主要了解prefork和worker这两种MPM模块. Prefork 如果不用"--with-mpm"显式指定某种MPM,prefork就是Unix平台上缺省的MPM.它所采用的预派生子进程方式,用单独的子进程来处理不同的请求,进程之间彼此独立.在make编译和make install安装后,使用httpd -l来确定当前使用的 MPM是prefork.c.

Apache中配置最大并发用户数 tcp连接设置方法

Apache在配置编译时可以自主的选择想要使用的MPM模块,使用./configure --with-mpm=MPM命令.我们主要了解prefork和worker这两种MPM模块. Prefork 如果不用"--with-mpm"显式指定某种MPM,prefork就是Unix平台上缺省的MPM.它所采用的预派生子进程方式,用单独的子进程来处理不同的请求,进程之间彼此独立.在make编译和make install安装后,使用httpd -l来确定当前使用的 MPM是prefork.c.查

Web性能测试中的几个关键指标

系统吞吐量 吞吐量指单位时间内系统处理的请求数量,体现系统的整体处理能力.对于网站,可以用"请求数/秒"或是"页面数/秒"来衡量,也可以用"访问人数/天"或是"处理的业务数/小时"等来衡量. TPS(每秒事务数)是吞吐量的一个常用量化指标,此外还有HPS(每秒HTTP请求数).QPS(每秒查询数)等.   系统吞吐量几个重要参数:QPS(TPS).并发数.响应时间 QPS(TPS):每秒钟request/事务 数量 并发数:

探讨性能测试中的计时问题

在系统测试时,尤其在需要测试算法或者某些模块的运行时间时,往往需要调 用一些时间函数库(如VC中的timeGetTime等可以获取毫秒级的时间),在待测试 的模块前后分别测试时间,然后,计算前后两个时间的差值,就得到模块的运行 时间,如图 1. 性能测试中的计时问题-互联网性能问题探讨"> 图 1 一个典型的模块计时方法 但是,使用原始的计时函数直接进行时间测试 在很多复杂情况下不方便,如图 1,当在一个模块中有多个子模块需要分别计时 ,所编写的计时代码甚至比原有的代码还多,这增加了程序维

重复-java 中 ReentrantLock 高并发响应时间控制性能问题

问题描述 java 中 ReentrantLock 高并发响应时间控制性能问题 如题,具体文案请移步--java 中 ReentrantLock 高并发响应时间控制性能问题 解决方案 http://my.oschina.net/hosee/blog/615865

性能测试中“并发度”的意义

之前的文章中曾出现过"并发度"这个概念,这个词不知道是不是我原创,它意在表达"并发"的可能性,是压力的一种度量.一些同学可能还没有理解这个概念的意义,下面我们看看它是怎么来-- 看过之前文章的同学应该知道,我将"并发"这个容易产生误解的词拆分成了"相对并发"和"绝对并发".为什么这么做呢?那是因为"绝对并发"说的是同一时刻发生的事情,这通常是我们无法观测和衡量的.而"相对并发&

性能测试中如何选取被测对象的业务逻辑

很多搞性能测试的人员,只会跟着网上.前辈教导的方法进行测试:挑选业务逻辑中并发量.访问量最高的业务逻辑.结合读写等业务进行测试,然后取整条业务逻辑(模拟用户全流程动作)的逻辑进行测试:结果就是:准备大堆的测试数据,复杂的准备工作:其实那些数据只是用来满足业务流中的条件,而不是真的能产生压力的部分: 笔者采用的方法: 1.B/S结构中,用户操作功能流程其实是前端js依次调用不同的CGI接口,后台实现上面其实并没有强依赖关系(只要满足对应条件进行发包都能执行). 所以,首先挑选业务逻辑中用户访问最高

Java7中的ForkJoin并发框架初探(下)

前两篇文章已经对Fork Join的设计和JDK中源码的简要分析.这篇文章,我们来简单地看看我们在开发中怎么对JDK提供的工具类进行应用,以提高我们的需求处理效率. Fork Join这东西确实用好了能给我们的任务处理提高效率,也为开发带来方便.但Fork Join不是那么容易用好的,我们先来看几个例子(反例). 0. 反例错误分析 我们先来看看这篇文章中提供的例子:http://www.iteye.com/topic/643724 (因为是反例,就不提供超链接了,只以普通文本给出URL) 这篇

Java7中的ForkJoin并发框架初探(上)

这篇我们来简要了解一下JavaSE7中提供的一个新特性 -- Fork Join 框架. 0. 处理器发展和需求背景 回想一下并发开发的初衷,其实可以说是有两点,或者说可以从两个方面看. 对于单核的处理器来说,在进行IO操作等比较费时的操作进行时,如果执行任务的方式是单任务的,那么CPU将会"空转",知道IO操作结束.如果有多任务的调度机制,则在一个任务不需要CPU支持的时候,CPU可以被调度处理其他任务.简单地讲,并发可以提高CPU计算资源的利用率. 对于多核,或者多个计算资源的情况