性能测试(三)-在线用户、并发用户和TCP之间的关系

什么是并发

并发是在单位时间内完成的事务(T)的个数,事务的定义取决与不同的场景,假如事务是用户的操作,那么并发就是并发用户。

TPS、在线用户之间的关系

请求和TPS之前如何转换?TPS和在线用户、并发用户之间的关系是怎样的?下面以一个用户购买商品的场景切入:
用户需要几个操作:1.打开首页——>2.登录——>3.点击品类——>4.选择商品——>5.点击购买——>6.订单详情——>7.支付成功

通过日志查看,其中一个在线用户完成此过程共进行100个请求,耗时250秒,由此可以估算出单个在线用户的TPS,那么取决于怎么定义T了。
如果把一个事务定义为单个请求,那么单个用户的TPS=100个请求/250秒=0.4TPS
如果把一个事务定义为业务操作,那么单个用户的TPS=7个业务/250秒=0.028TPS
如果把一个事务定义为整个用户,那么完成整个流程就是1个事务,单个用户的TPS=1个事务/250秒=0.004TPS

多个在线用户的TPS

假设现在有100000个在线用户,每个用户的操作时间肯定是不一样的,我们假设平均完成时间都是250秒,且都在1小时内操作,那么
请求级的TPS=100000(用户数)*100(每个用户的请求数)/3600秒(完成时间)=2777.78TPS
单业务级TPS=100000(用户数)*7(业务操作数)/3600秒(完成时间)=194.44TPS
用户级TPS=100000(用户数)*1(整个业务)/3600秒(完成时间)=27.78TPS

TPS、并发用户之间的关系

请求之间有停顿的用户可以看成在线用户,请求之间没有停顿的用户可以看成并发用户,请求之间没有停顿可以用Jmeter来跑同样的请求,这里得到100个请求共耗时6秒,那么可以计算出对应的TPS:
请求级的TPS=1用户*100请求/6秒=16.67TPS
单业务级的TPS=1用户×7业务/6秒=1.17TPS
用户级的TPS=1用户×1事务/6秒=0.17TPS

可以算一下一个没有停顿的用户(并发用户)相当于多少个有停顿的用户(在线用户)呢?
16.67÷0.4=1.17÷0.028=0.17÷0.004≈41.79倍,即1个并发用户相当于41.79个在线用户
那么并发度就是1÷41.79≈2.4%(也可由6秒/250秒算出)
而10万在线用户对应的并发用户就是100000×2.4%=2400,
一个线程(100个请求)跑出来的请求级的TPS是16.67,想要模拟10万用户在线,需要的压力线程数就是2777.78(10万在线用户的请求级TPS)÷16.67(一个压力线程的请求级TPS)≈167(压力线程)

公式总结

在线用户和压力线程之间的关系:

  • 用请求级的TPS计算:
    压力线程 = [(在线用户数×单用户请求数) / 峰值采样时间段] ÷ 一个压力线程的请求级TPS

  • 用单业务操作级TPS计算:
    压力线程 = [(在线用户数×单用户业务操作数) / 峰值采样时间段] ÷ 一个压力线程的业务操作级TPS

  • 用用户级TPS计算:
    压力线程 = [(在线用户数×单用户整体业务完成数1) / 峰值采样时间段] ÷ 一个压力线程的用户级TPS

并发用户数的计算:

  • 并发用户数 = 在线用户数 × (有停顿时间的单线程TPS / 无停顿时间的单线程TPS)

并发度的计算:

  • 并发度 = 并发用户数 / 在线用户数 × 100%

说明:

  1. 在线用户数,可以从日志中取到;
  2. 在线用户数统计的时间段,可以从日志取到;
  3. 用户级操作的完成业务流时间,可以从日志取到(这个要多采样一些数据计算平均时间);
  4. 无停顿时间的完整业务流时间,可以从压力工具中取到;
  5. 单用户完整业务流的请求数,可以从日志中取到。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaobai178

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值