你笑的时候全世界陪你一起笑,你哭的时候只有你一个人哭

Dio的性能测试经验总结 - 2

上一篇 / 下一篇  2015-11-25 17:08:21 / 个人分类:性能测试

三、并发(用户):并发同样是衡量系统处理能力的指标之一,但它却是个很模糊的概念,什么是并发?绝对还是相对?它和“用户”又有什么关系?
并发也有2个概念需要明确:
1、并发不是一个瞬时的概念,它和TPS一样,包含了时间段的概念。
2、并发和用户没有直接关系。

并发(Concurrency):两个或多个事件在同一时间间隔内发生。
并行(Parallelism):两个或多个事件在同一时刻发生。
并发和并行是两种含义,并发体现的是宏观上的多任务处理,而并行体现的是瞬时的多任务处理。很多文章介绍并发的时候习惯分为“相对并发”和“绝对并发”,其实说的就是并发和并行。这不免让人觉得有点玩文字游戏,但作为概念阐述却相当必要。
考察瞬时的任务或事件没有太大意义,如果看计算消耗,那么你的被测系统有多少Core就最多有多少并行的任务,如果看内存占用,你的请求产生了多少进程就有多少并行的任务,但你的系统绝不是只能“同时”处理Core个请求!!性能测试考察的不是绝对时间切片下的处理能力,而是一段时间下的统计值(像TPS一样)。
并发的定义里没有提到时间间隔的大小,这也就造成了大家对并发理解的不同。站在用户的角度,有多少人在同时使用系统就有多少用户的并发;站在应用的角度有多少请求在执行就有多少应用的并发;站在CPU的角度,有多少计算任务的提交就有多少任务的并发。他们的区别在于考察的角度不同,衡量的时间间隔不同。用户角度通常以分钟为单位,只要不超出用户的容忍时间(timeout)即可;应用角度通常以秒为单位,协议标准或中间件配置中一般都会设置请求的timeout时间;硬件CPU的角度通常以毫秒甚至更小的时间为单位,CPU在设定的时间片下不停的切换执行任务。
举个例子:银行网点的大堂经理看到此时柜面所有窗口都有柜员在**业务,不管柜员是在等待客户签名,还是在确认提交,所有柜员都在忙,站在用户的角度所有柜员就是并发;银行系统管理员在监控,他看到定是刷新的监控软件显示请求(进程或线程)在不断的变化,不管这个请求是time wait还是running,请求都没有终结,站在系统的角度所有请求就是并发;处理银行业务的服务器是一台24C48G的小型机,CPU在不停的轮询计算,它不关注上层的交易和请求,只要这个任务条件具备就能执行,站在硬件的角度所有任务就是并发。因为衡量的角度不同,并发的数量从用户到硬件是逐层递减的。
由此可以看到,并发其实和用户没有直接的关系,我们之所以总是寻求这种关系也是因为受LoadRunner把并发起名为Virtual User影响,JMeter很聪明,它管产生并发的组件叫Thread Group,决口不提和用户的关系。

另外还有两个名词:系统用户数,在线用户数。系统用户很容易理解,这个系统里最大有多少,或曾经最大有过多少用户。对一个不用注册即可访问的公共系统来说,它的系统用户可能是全球上亿用户,对一个必须登录才能访问的系统来说,数据库用户表里的记录数就是它的系统用户数。这些用户一般不会“同时”都发送请求。在线用户数一般定义为连接但不发送请求的用户,但对性能测试而言不发送请求,不对被测应用产生负载的用户我为什么要关注?在线用户其实主要是针对BS架构的系统而言的,在线用户同样是消耗资源的,但他消耗的不是计算资源,而是维护session的内存资源,对BS架构的系统而言session是必须的,但对银行核心类系统而言则没有session的概念。

TAG:

 

评分:0

我来说两句

Open Toolbar