你知道并发用户数是怎么算的么

本文探讨了并发用户数的计算方法,区分了在线用户数与并发用户数。通过示例解释了如何根据并发度计算在线用户数,强调了压力测试中关注的是服务器处理能力(TPS)而非压力工具的并发线程数。同时,通过JMeter和服务器的实例分析,展示了不同压力机线程数对系统性能的影响。
摘要由CSDN通过智能技术生成

你知道并发用户数是怎么算的么


什么是并发

下面我们就来说一下“并发”这个概念。:

在这里插入图片描述

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

在线用户数、并发用户数怎么计算

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

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

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

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

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

压力工具中的线程或用户数到底是不是用来描述性能表现的?我们通过一个示意图来说明:

在这里插入图片描述

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

  1. 如果有 10000 个在线用户数,同时并发度是 1%,那显然并发用户数就是 100。
  2. 如果每个线程的 20TPS,显然只需要 5 个线程就够了(请注意,这里说的线程指的是压力机的线程数)。
  3. 这时对 Server 来说,它处理的就是 100TPS,平均响应时间是 50ms。50ms 就是根据 1000ms/20TPS 得来的(请注意,这里说的平均响应时间会在一个区间内浮动,但只要 TPS 不变,这个平均响应时间就不会变)。
  4. 如果我们有两个 Server 线程来处理,那么一个线程就是 50TPS,这个很直接吧。
  5. 请大家注意,这里我有一个转换的细节,那就是并发用户数到压力机的并发线程数。这一步,我们通常怎么做呢?就是基准测试的第一步。关于这一点,我们在后续的场景中交待。

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


示例

上面说了这么多,我们现在来看一个实例。这个例子很简单,就是:

JMeter(1 个线程) - Nginx - Tomcat - MySQL

通过上面的逻辑,我们先来看看 JMeter 的处理情况:


summary +   5922 in 00:00:30 =  197.4/s Avg:     4 Min:     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值