上述计算结果,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万个新的请求,没有连接进程可用,系统将陷入到崩溃的状态(CPU爆满)。举个通俗的示例,某个高速路口有5条车道,每秒可以同时通过5部车,突然有1条车道上出了车祸,只剩下4个车道可以通过,也就是说,这个路口1秒钟现在只能通过4部车,车流量仍然依旧,结果必定出现大塞车。