举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时系统内有10台Apache的Web服务器,配置Apache的最大连接数目为500,那么,我们的Web系统的理论峰值QPS为:
10*500/0.1 = 50000 (5万QPS)
上述计算结果,1秒钟可以处理完5万的请求,系统似乎看起来很强大,但实际情况并没有这么理想,在高并发的实际场景下,服务器都是处于高负载的状态,在这种状态下,平均响应时间也会被大大增加。一个高配置的至强处理器能支持的最大并发连接是1 ~ 2万,如果访问量超过2万那么就需要更高性能的服务器才能解决,如果服务器硬件不给力,软件怎么优化都是于事无补的。就Web服务器而言,Apache打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗,必然会直接导致平均响应时间增加。
假设我们的web系统在5万QPS的高并发状态下,平均响应时间从100ms变为250ms(可能会更高),那么,此时我们的Web系统的理论峰值QPS则变为:
20*500/0.25 = 40000 (4万QPS)
如此一来,我们的web系统只剩下4万的QPS,面对5万每秒的请求,中间相差了1万。这就是高并发状况,在某一秒内,服务器所有可用连接进程都在满负荷
工作中,却仍然有1万个新的请求,没有连接进程可用,系统将陷入到崩溃的状态