在处理高并发问题时Nginx为何比Apache表现的更优秀?

  • 回答 (7)
  • 关注 (0)
  • 查看 (336)

同样作为HTTP Server,Nginx和Apache有哪些区别?在处理高并发问题时Nginx为何比Apache表现的更加优秀?

晴空晴空提问于
小翼111This is a bug!111回答于

反向代理提高网站性能主要通过三个方面:

  1. 反向代理可以理解为7层应用层的负载均衡,使用负载均衡之后可以非常便捷的横向扩展服务器集群,实现集群整体并发能力、抗压能力的提高。
  2. 通常反向代理服务器会带有本地Cache功能,通过静态资源的Cache,有效的减少后端服务器所承载的压力,从而提高性能
  3. http压缩,开启压缩后,网络流量传输减小,相同带宽下可以服务更多用户最后还有一个TCP链接复用,不过说实话,如果不是商用的负载均衡器,一般没这个功能。

其实,反向代理还可以有效的隐藏隔离内部服务器,提高了安全性,这也算是提高性能的一个方面吧。

主要是在高并发的情况下才能体现出优势来。如果很少,可能表现不如apache httpd。

宇ccccValar Morghulis回答于

传统上基于进程或线程模型架构的web服务通过每进程或每线程处理并发连接请求,这势必会在网络和I/O操作时产生阻塞,其另一个必然结果则是对内存或CPU的利用率低下。生成一个新的进程/线程需要事先备好其运行时环境,这包括为其分配堆内存和栈内存,以及为其创建新的执行上下文等。这些操作都需要占用CPU,而且过多的进程/线程还会带来线程抖动或频繁的上下文切换,系统性能也会由此进一步下降。另一种高性能web服务器/web服务器反向代理:Nginx(Engine X),nginx的主要着眼点就是其高性能以及对物理计算资源的高密度利用,因此其采用了不同的架构模型。受启发于多种操作系统设计中基于“事件”的高级处理机制,nginx采用了模块化、事件驱动、异步、单线程及非阻塞的架构,并大量采用了多路复用及事件通知机制。在nginx中,连接请求由为数不多的几个仅包含一个线程的进程worker以高效的回环(run-loop)机制进行处理,而每个worker可以并行处理数千个的并发连接及请求。

apache是同步,nginx是异步,在处理事务上显然是nginx更好一点,也更能处理事务的并发。

也有很多人认为是nginx反向代理所以会比apache更好处理并发,其实不是的,单纯的反向代理模式并不能提高性能,后端收到的请求数没变,协议也没变,带宽也没有减小,而且如果是默认配置,还会把HTTP/1.1变成HTTP/1.0,反而会降低性能,那些说性能提高的通常也没测过,只是个心理作用而已。

一步回答于

我一直使用Apache,觉得它在中小型服务器上还是不错的,但是大型一点性能就跟不上了

林岑影let bio = '这家伙真懒, 什么都没留下...'回答于
正在输入回答于
司徒永哥家无水表,不收快递。回答于
独木桥先生回答于

Nginx 的诞生主要解决C10K问题,apache不够的

扫码关注云+社区

领取腾讯云代金券