pahce和nginx相比,为什么nginx并发更高,处理速度更快?
从深入角度来说,这里的 openresty 是基于 nginx 增加了模块,我们说的其实也就是 nginx 的性能,而 nginx 是异步非阻塞的,基于事件驱动的 server,相比其他的 server 在卡主的时候他为什么不卡?
在任何情况下假如mysql 卡了,这条请求的上下文会被卡在这里,不管是 nginx 还是 apache,都会卡住这条请求,但是问题关键还在于后续的请求进来后会怎么办?apache 的做法是开启一个新的进程来处理后续的请求,但系统进程资源是有限的,所以面对大量请求时,进程耗尽,apache 就会把所有后续的请求都卡住了。nginx 只有一个master进程和已配置个数的 worker进程,master 进程把请求交给 worker 去处理,一个worker 在可能出现阻塞的地方会注册一个事件就放过去了(epoll模型),而不是干巴巴的等待阻塞被处理完,他会继续处理后续的请求(非阻塞),当这个事件处理完之后会通过callback来通知worker继续处理那条请求后续的事情(事件驱动)因此单个worker可以处理大量请求而不会轻易让整个系统卡住。