性能-什么是并发用户数

作者&投稿:蔺包 (若有异议请与网页底部的电邮联系)
~

我们假设上图中的这些小人是严格按照这个逻辑到达系统的,那显然,系统的绝对并发用户数是 4。如果描述 1 秒内的并发用户数,那就是 16。是不是显而易见?

但是,在实际的系统中,用户通常是这样分配的:

也就是说,这些用户会分布在系统中不同的服务、网络等对象中。这时候”绝对并发“这个概念就难描述了,你说的是哪部分的绝对并发呢?

要说积分服务,那是 2;要说库存服务,那是 5;要说订单服务,它自己是 5 个请求正在处理,但同时它又 hold 住了 5 个到库存服务的链接,因为要等着它返回之后,再返回给前端。所以将绝对并发细分下去之后,你会发现头都大了,不知道要描述什么了。

有人说,我们可以通过 CPU 啊,I/O 啊,或者内存来描述绝对并发,来看 CPU 在同一时刻处理的任务数。如果是这样的话,绝对并发还用算吗?那肯定是 CPU 的个数呀。有人说 CPU 1ns 就可以处理好多个任务了,这里的 1ns 也是时间段呀。要说绝对的某个时刻,任务数肯定不会大于 CPU 物理个数。

所以“绝对并发”这个概念,不管是用来描述硬件细化的层面,还是用来描述业务逻辑的层面,都是没什么意义的。

我们只要描述并发就好了,不用有“相对”和“绝对”的概念,这样可以简化沟通,也不会出错。

那么如何来描述上面的并发用户数呢?在这里我建议用 TPS 来承载“并发”这个概念。

并发数是 16TPS,就是 1 秒内整个系统处理了 16 个事务。

这样描述就够了,别纠结。

那么新问题又来了,在线用户数和并发用户数应该如何算呢?下面我们接着来看示意图:

如上图所示,总共有 32 个用户进入了系统,但是绿色的用户并没有任何动作,那么显然,在线用户数是 32 个,并发用户数是 16 个,这时的并发度就是 50%。

但在一个系统中,通常都是下面这个样子的。

为了能 hold 住更多的用户,我们通常都会把一些数据放到 Redis 这样的缓存服务器中。所以在线用户数怎么算呢,如果仅从上面这种简单的图来看的话,其实就是缓存服务器能有多大,能 hold 住多少用户需要的数据。

最多再加上在超时路上的用户数。如下所示:

所以我们要是想知道在线的最大的用户数是多少,对于一个设计逻辑清晰的系统来说,不用测试就可以知道,直接拿缓存的内存来算就可以了。

假设一个用户进入系统之后,需要用 10k 内存来维护一个用户的信息,那么 10G 的内存就能 hold 住 1,048,576 个用户的数据,这就是最大在线用户数了。在实际的项目中,我们还会将超时放在一起来考虑。

但并发用户数不同,他们需要在系统中执行某个动作。我们要测试的重中之重,就是统计这些正在执行动作的并发用户数。

当我们统计生产环境中的在线用户数时,并发用户数也是要同时统计的。这里会涉及到一个概念:并发度。

要想计算并发用户和在线用户数之间的关系,都需要有并发度。

做性能的人都知道,我们有时会接到一个需求,那就是一定要测试出来 系统最大在线用户数是多少。 这个需求怎么做呢?

很多人都是通过加思考时间(有的压力工具中叫等待时间,Sleep 时间)来保持用户与系统之间的 session 不断,但实际上的并发度非常非常低。

我曾经看到一个小伙,在一台 4C8G 的笔记本上用 LoadRunner 跑了 1 万个用户,里面的 error 疯狂上涨,当然正常的事务也有。我问他,你这个场景有什么意义,这么多错?他说,老板要一个最大在线用户数。我说你这些都错了呀。他说,没事,我要的是 Running User 能达到最大就行,给老板交差。我只能默默地离开了。

这里有一个比较严重的理解误区,那就是压力工具中的线程或用户数到底是不是用来描述性能表现的?我们通过一个示意图来说明:

通过这个图,我们可以看到一个简单的计算逻辑:

而我们通常说的“并发”这个词,依赖 TPS 来承载的时候,指的都是 Server 端的处理能力,并不是压力工具上的并发线程数。在上面的例子中,我们说的并发就是指服务器上 100TPS 的处理能力,而不是指 5 个压力机的并发线程数。请你切记这一点,以免沟通障碍。

所以,我一直在强调一点,这是一个基础的知识:不要在意你用的是什么压力工具,只要在意你服务端的处理能力就可以了。

上面说了这么多,我们现在来看一个实例。这个例子很简单,就是:
JMeter(1 个线程) - Nginx - Tomcat - MySQL
通过上面的逻辑,我们先来看看 JMeter 的处理情况:

我们可以看到,JMeter 的平均响应时间基本都在 5ms,因为只有一个压力机线程,所以它的 TPS 应该接近 1000ms/5ms=200TPS。从测试结果上来看,也确实是接近的。有人说为什么会少一点?因为这里算的是平均数,并且这个数据是 30s 刷新一次,用 30 秒的时间内完成的事务数除以 30s 得到的,但是如果事务还没有完成,就不会计算在内了;同时,如果在这段时间内有一两个时间长的事务,也会拉低 TPS。

那么对于服务端呢,我们来看看服务端线程的工作情况。

可以看到在服务端,我开了 5 个线程,但是服务端并没有一直干活,只有一个在干活的,其他的都处于空闲状态。
这是一种很合理的状态。但是你需要注意的是,这种合理的状态并不一定是对的性能状态。

下面我们换一下场景,在压力机上启动 10 个线程。结果如下:

平均响应时间在 25ms,我们来计算一处,(1000ms/25ms)*10=400TPS,而最新刷出来的一条是 396.2,是不是非常合理?

同样是 5 个线程,现在就忙了很多。

如果要有公式的话,这个计算公式将非常简单:

对于压力工具来说,只要不报错,我们就关心 TPS 和响应时间就可以了,因为 TPS 反应出来的是和服务器对应的处理能力,至少压力线程数是多少,并不关键。我想这时会有人能想起来 JMeter 的 BIO 和 AIO 之争吧。

你也许会说,这个我理解了,服务端有多少个线程,就可以支持多少个压力机上的并发线程。但是这取决于 TPS 有多少,如果服务端处理的快,那压力机的并发线程就可以更多一些。

这个逻辑看似很合理,但是通常服务端都是有业务逻辑的,既然有业务逻辑,显然不会比压力机快。

应该说,服务端需要更多的线程来处理压力机线程发过来的请求。所以我们用几台压力机就可以压几十台服务端的性能了。

如果在一个微服务的系统中,因为每个服务都只做一件事情,拆分得很细,我们要注意整个系统的容量水位,而不是看某一个服务的能力,这就是拉平整个系统的容量。

我曾经看一个人做压力的时候,压力工具中要使用 4000 个线程,结果给服务端的 Tomcat 上也配置了 4000 个线程,结果 Tomcat 一启动,稍微有点访问,CS 就特别高,结果导致请求没处理多少,自己倒浪费了不少 CPU。

通过示意图和示例,我描述了在线用户数、并发用户数、TPS(这里我们假设了一个用户只对应一个事务)、响应时间之间的关系。有几点需要强调:




大哥,我是个初学的菜鸟 我听别人说 交换机能看病发数 病发数 是同时在...
首先给你纠正下,是“并发”而不是“病发”。并发数一般是对于防火墙来说的,交换机没有并发数这个说法,并发数也就是并发连接数,指的是防火墙对信息处理的最大能力,一个并发连接可以说是一个会话或者一个应用,并不是一个在线的用户,一个用户可以同时产生多个会话或者应用。一般来说,查看在线人数...

谁能给我讲讲“并发” 到底怎么理解?,比如别人说的“数据库支持100并发...
100线程就恐怖了。。。并发,可以简单理解,合并发出,100并发,,同时做100个发出处理,比如,你一个人同时和100个人聊天

用LR做性能测试,怎么设置在线用户数和并发用户数量。
场景设置到并行100个呗,你现在164肯定就不对了,场景可以设置以什么速度启动虚拟用户,然后到多少,运行多久,然后关闭又按什么速度,这才是一个完整的场景。取用户名的那个变量设置为1000个用户+密码。

为什么要并发,并发有什么优点?我觉得并发不能提高程序的执行速度_百 ...
在操作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。在关系数据库中,允许多个用户同时访问和更改共享数据的进程。SQL Server 使用锁定以允许多个用户同时访问和更改共享数据而彼此之间...

性能测试之如何构造海量测试数据
业务建模除了要理清楚流程之外,就需要对业务数据进行分析得到性能需求(指标);在不同的并发用户得到不同的RT、TPS等业务指标。 在前期是可以估算的,假设设置1个用户(线程),按业务比例执行业务场景,持续5分钟,得到一个基准值,或统计整个场景得到总TPS,再按比例分配; 如100线程并发,其中有30%的用户登录,10%去发帖,...

关于登录模块的性能测试~~用户并发测试
例如:公司OA系统账号或者总用户有2000人;最高峰在线500人;但是这500人并不是作为并发用户存在的概念。即并不表示服务器实际承载的压力;有可能40%关注的是首页新闻公告板之类(注意看新闻这个阶段是不能造成服务器的压力);20%用户在查询资料或者操作表格;20%用户在发呆;20%在页面之间跳转;在这种...

什么是并发数?
并发数,计算机网络术语,是指同时访问服务器站点的连接数。由于虚拟主机是建立在每台服务器多用户的基础上的,也就是多个用户共同使用一台服务器。为了避免同一台服务器上的某一个用户的IIS链接人数过多或占用服务器资源过多而影响其它用户的正常使用。所以,目前所有虚拟空间提供商都对单个用户的IIS链接...

性能测试-概念篇(三)
对于长连接来说,最大并发用户数即系统的并发接入能力。实际上,就算是长连接,如果实际业务已经丢掉了异常的请求,那么最大并发用户数不等于系统的并发接入能力。 对于短连接来说,最大并发用户数并不等于系统的并发接入能力。并发是在单位时间内完成的事务(T)的个数。在线用户数和压力线程之间的...

常用的性能测试方法有哪些
郭靖要能应对住,并且不能丢进小命。而常规性能测试就好比郭靖和黄药师、洪七公三人约定,只要郭靖能分别接两位高手一百招,郭靖就算胜。至于三百招后哪怕郭靖会输掉那也不用管了。他只要能做到接下一百招,就算通过。思考 我们在做软件压力测试时,往往要增加比负载测试更多的并发用户和交易,这是为什么...

性能测试包括哪些方面
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能...

振安区19592333968: 并发用户数 - 搜狗百科
苑咏小施: 并发用户数量,有两种常见的错误观点.一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;还有一种比较接近正确的观点是把用户在线数量理解为并发用户数量.实际上,在线用户不一定会...

振安区19592333968: 并发用户数是什么?跟在线用户数什么关系 -
苑咏小施: 并发用户数:在同一时刻与服务器进行了交互的在线用户数量.这些用户的最大特征是和服务器产生了交互,这种交互既可以是单向的传输数据,也可以是双向的传送数据. 有两种常见的错误观点.一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;还有一种比较接近正确的观点是把用户在线数量理解为并发用户数量.实际上,在线用户不一定会和其他用户发生并发,例如正在浏览网页的用户,对服务器是没有任何影响的.但是,用户在线数量是统计并发用户数量的主要依据之一.

振安区19592333968: 性能测试中,并发用户数是指的服务端并发么?客户端并发与服务端并发的区别是什么? -
苑咏小施: 这个问题问的好.并发,指的都是服务器的并发.什么叫并发,这个你应该知道了,客户端的并发没有意义,因为从客户端的角度而言,并发永远是1..并发数指同一时刻,对服务器有实际交互的请求数.所以,服务器的并发数是没有上限的,而客户端的基本上都是1.

振安区19592333968: 金蝶软件的并发用户数是什么意思 -
苑咏小施: 就是同一个时间点可以允许同时在线使用软件的人数,3个并发用户数就是同一时间允许3个用户同时使用软件,第四个人是无法使用的,否则必须挤掉一个用户.

振安区19592333968: 性能测试并发用户数 -
苑咏小施: 如果你还是想去从并发用户去考虑,也行.业内也有一个比较常用的公式 : 并发用户数=nl/t ,n是当前在线用户数,l是在线用户大概会使用系统的时长,t是考虑的时长,也就是你说的24小时. 如果如你所说的100w是系统最大用户数,那么,你得知道同时有多少人在线.

振安区19592333968: 系统的性能指标有几种 -
苑咏小施: 一般系统的性能指标有: 1、响应时间(系统为其服务所耗费的时间). 2、吞吐量(简单讲就是系统在每单位时间内能处理多少个事务/请求/单位数据等). 3、资源使用率(常见的资源有:CPU占用率、内存使用率、磁盘I/O、网络I/O). 4、点击数(单位时间内,系统响应客户的请求,是系统处理能力的一个很有用的指标). 5、并发用户数(并发用户数用来度量服务器并发容量和同步协调能力).

振安区19592333968: 并发用户数的LoadRunner中的并发用户数理解: -
苑咏小施: 关于并发用户数的问题,一直很困惑着我对性能测试方面的理解.1、在LR中,“并发用户数量”是怎么设置?我个人的理解是在LR的controller中设置,如附件,这样理解对吗?2、LR中也一直提及到“虚拟用户”,那到底“虚拟用户”和“并...

振安区19592333968: 服务器的并发是什么意思,怎么计算的! -
苑咏小施: 服务器并发指的是多个用户同时访问数据库中的同一字段的行为.这样的用户行为对于服务器的性能是一种考验.但是,再好的服务器也有自己的性能上限,当并发用户数过多的时候,再好的服务器也支持不住.事实上,我们在生活中经常能遇到由于并发用户过多而导致的系统缓慢甚至瘫痪现象.比方说,很多使用过那些在线考试报名系统的朋友都会发现,半夜登录系统报名比白天登录系统报名要容,网页反应速度也要快一些,这就是由于晚上的并发用户数比较小的原因.对于IT运维人员来说服务器并发是恐怖的,因为服务器的最大用户并发数并不是IT运维人员所能控制的,我们能做到的只是采用各种手段来提升系统的性能,提升服务器的性能利用率.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网