并发数,线程数,吞吐量,每秒事务数(TPS)都是性能测试领域非常关键的数据和指标。
那么他们之间究竟是怎样的一个对应关系和内在联系?
测试时,我们经常容易将线程数等同于表述为并发数,这一表述正确吗?
本文就将对性能领域的这些关键概念做一次探讨。
文章可能会比较长,希望您保持耐心看完。
1. 走进开封菜,了解性能
①老王开了家餐厅
我们的主角老王,在M市投资新开业了一家,前来用餐的顾客络绎不绝:
餐厅里有4种不同身份的人员:
用户一次完整的用餐流程如下:
顾客到店小二处付款点餐 => 小二将订单转发给后厨 => 后厨与备菜工配合,取材完成烹饪后交给小二 => 小二上菜,顾客用餐。
假设所有顾客都不堂食而是打包带走,也就是不考虑用户用餐时间。餐厅完成一次订单的时间是多久?
订单时间 = 顾客点单时间 + 前台接收转发时间 + 后厨取材烹饪时间 + 后厨交给服务员,服务员上菜时间。
说白了就是每个流程的耗时相加。
假设以上时间分别为1,1,5,1(分钟),那么一次订单的完成时间就是8分钟。
②问题来了
餐厅当然不可能只有一个人就餐,否则老王不要带着小姨子跑路。
所以我们接下来看多人就餐的情况。
假设同一时间点上有两人就餐,会发生什么情况?
第一位用户与第一个场景一样,仍然是点单-下单-烹饪-上菜,8分钟后第一位顾客拿着打包的食物离开。
第二位用户则有所不同了。假设小二,厨师,备菜都只有一人,而且他们每个人同时只能处理一件事情。
那么第二位用户首先需要在点餐时等待小二1分钟,而后厨师烹饪第一位用户的菜时,没有任何人在为他服务。
我们来梳理一下这个过程中,每一分钟都发生了什么事情:
可以看到,两个顾客完成订单的总时长是13分钟。
继续推算我们发现,每增加一人总时长增加5分钟。
在当前的人员配置下,顾客越多,后来的顾客等待时间就越长。
③这还不是高峰期
如果餐厅在高峰时段只有两人用餐,那估计老王还得带着小姨子跑路。
实