Apache 与 NGINX 对比
Apache 与 NGINX 各有什么优缺点
Apache 同步阻塞式的工作方式,NGINX 异步非阻塞式的工作方式。
- Apache 的优点
- Apache的rewrite功能比nginx的要强大
- 找到模块模块非常多,基本想要的功能都能对较少存在时间较长,文献较全,bug也少
- 动静态解析都超稳定
- Apache 的缺点
- 由于工作模式是同步阻塞型,导致资源消耗较高,并发能力较差
- NGINX 的优点
- 轻量级服务,比Apache占用更少的内存及资源并发能力强,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx能保持低资源低消耗高性能
- 高度模块化的设计,编写模块相对简单
- 社区活跃,各种高性能模块产出迅速
- NGINX 的缺点:
- 动态处理上需要使用fastcgi连接PHP的FPM服务,相比Apache不占优势
总结:
Nginx 适合做静态处理,简单,效率高Apache 适合做动态处理,稳定,功能强并发较高的情况下优先选择Nginx,并发要求不高的情况下两者都可以,规模稍大的可以使用Nginx作为反向代理,然后将动态请求负载均衡到后端Apache上。
什么是同步与异步
同步:小明收到快递将送达的短信,在楼下一直等到快递送达。
异步:小明收到快递将送达的短信,小明不会下楼去取, 而是快递小哥到楼下后,打电话通知小明,然后小明下楼取快递
什么是阻塞与非阻塞
阻塞:小明收到快递即将送达的信息后,什么事都不做,一直专门等快递。
非阻塞:小明收到快递即将送达的等快递的时候,还一边敲代码信息后,一边听歌,等着快递送达的消息。
Nginx以异步非阻塞方式工作
客户端发送request,服务器分配work进程来处理能立即处理完的,处理后work进程释放资源,进行下一个request的处理。
不能立即处理完的work进程注册返回事件,然后接着去处理其他request。
当之前的request结果返回后,触发返回事件,由空闲work进程接着处理通过这种快速处理,快速释放请求的方式,达到同样的配置可以处理更大并发量的目的。