# 性能测试基础（三）经典例子--理发店原理



<br>
接下来通过一个简单理发店模拟来理解系统的并发处理。

![](http://img.testclass.net/barber_shop.jpg)

<br>
__前提：__

1. 一个理发店有三位理发师傅。

2. 每位理发师傅服务一位顾客需要一小时。

3. 顾客都很忙，从进理发店起最多只能等待三小时（等待加 + 被服务的时间）。

__思考：__

这里我们来理解“最佳用户数”和“最大用户数”。

__最佳用户数：__

理发店的最佳状态，理发店收入最多（理发师傅没有休息时间，一直在理发），顾客满意度最高（顾客随时店随时接受服务，无需要等待）。从一个时间点来看，3个理发师傅服务3位顾客，那么这个最佳用户数是3。

__最大用户数：__

理发店的最大承受状态，理发店收入最多（理发师傅没有休息时间，一直在理发），顾客的最大忍耐度（来的顾客等上三个小时才轮到自己服务）。

假如理发店生意非常好，早上一开门一下子来了一群顾客（很多），A、B、C三位顾客先理，D、E、F顾客需要等待一小时才能得到理发师傅的服务，G、H、I三位顾客等待了两小时才得到服务，后面排队的J、K、L.....等顾客，已经等了三小时还没得到服务，因为这已经得达到了他们等待的极限，所以后他们气愤和无奈离开。

当然，理发店还会不断的来新的顾客，不断有等了三小时而没有得到服务的顾客离开，但对于理发店而言，他们在一个时间点上，能服务的最大用户数是九（三位正在接受服务、三位需要等待1小时，三位需要等待2小时）。

对于最大用户数，需要注意的两点：

1. 在理发店里很大，可以容纳很多位顾客（大于9），总有一部分在这里等待了三小时而没有得到服务离开，不要把等待了3小而没有得到服务的顾客纳入最大用户数里。

2. 假如理发店很小，最多只能容纳六位顾客，当第七个顾客来时，虽然，我们知道他只需要等待2小时就可得到服务（这个时间是他可以接受的范围），但由于理发店容量有量，这第七个顾客只有改天再来了。

关于理发店原理，[参考](http://www.cnblogs.com/jackei/archive/2006/11/20/565527.html)

不知道通过上面对理发店的分析，你对性能有了一些眉目。假如理发店相当于我们的系统的话，顾客就我们向服务器所发送的请求，最佳用户数和最大用户数是我们衡量一个系统的处理能力的一种方法。




原始封面

![课程图片](https://images.unsplash.com/photo-1600948836101-f9ffda59d250?w=300)


