Nginx和Apache对比

1. nginx 特点

1. 轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源

2. 坑并发能力强,nginx是用epoll和kqueue作为开发模型,请求处理是异步非阻塞的,负载能力比apache高很多,而apache则是阻塞性的,
在高并发下nginx能保持低资源低消耗高性能,而apache在php处理慢或者前段压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象

3. nginx在开启时,会生成一个master进程,然后,master进程会fork多个worker子进程,最后每个用户的请求由worker的子进程处理。

4. 可以配置nginx的upstream实现nginx的反向代理

5. nginx作为负载均衡服务器,支持七层负载均衡

6. nginx 处理静态文件好,静态处理性能比apache高三倍以上

7. 支持高并发链接,每秒最多的并发链接请求理论上达到50000个。

8. nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用-t测试配置有没有问题,apache配置复杂,重启的时候出现配置出错了,会很崩溃

9. 涌现出处理用户请求,而线程是共享内存的,只需要开启少量进程,多个线程就可以共享进程的内存,占用内存小

10. 1个进程死掉时,会影响到多个用户的使用,稳定性差

11. nginx的设计高度模块化,编写模块相对简单

12. nginx本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器

13. 启动特别容易,并且几乎可以做到7*24不间断运行,及时运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级

14. 社区活跃,各种高性能模块出品迅速

2. apache特点

1. select 同步阻塞

2. 一个连接对应一个进程

3. 用进程处理用户请求,用MPM(多处理模块)来绑定到网络端口上,接受请求,调度子进程处理请求

4. 当用户请求过多时,开启的进程较多,占用内存大,每秒最多的并发链接请求最多不超过3000个

5. 一个进程死掉时,不会影响其他的用户

6. apache的rewrite比nginx强大,在rewrite频繁的情况下,用apache

7. apache发展到现在,模块超多,基本想到的都可以找到

8. apache更为成熟,少bug,nginx的bug相对较多

9. apache 超稳定

10. apache对PHP支持比较简单,nginx需要配合其他后端用

11. apache在处理动态请求有优势,一般动态请求要apache去做,nginx适合静态和反向。

12. apache仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区。

    两者最核心的区别在于apache是同步多进程模型,一个连接对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。一般来说,需要性能的web服务,用nginx。如果不需要性能只求稳定,更考虑apache,apache的各种功能模块实现比nginx好,例如ssl的模块就比nginx好,可配置项多。epoll(freebsd上是kqueue)网络IO模型是nginx处理性能高的根本理由,但并不是所有的情况下都是epoll大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache的select模型或许比epoll更高性能。当然,这只是根据网络IO模型的原理作的一个假设,真正的应用还是需要实测。更为通用的方案是,前端nginx抗并发,后端apache集群,配合起来会更好。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值