不断有人跟我说Nginx比Apache好、比Apache快之类。Nginx更主要是作为反向代理,而非Web服务器使用。我翻译过一本关于反向代理的技术书籍,同时精通Apache API开发,对Nginx和Apache的工作原理都略有了解,粗谈一下看法。
不管是Nginx还是Squid这种反向代理,其网络模式都是事件驱动。事件驱动其实是很老的技术,早期的select、poll都是如此。后来基于内核通知的更高级事件机制出现,如libevent里的epoll,使事件驱动性能得以提高。事件驱动的本质还是IO事件,应用程序在多个IO句柄间快速切换,实现所谓的异步IO。事件驱动服务器,最适合做的就是这种IO密集型工作,如反向代理,它在客户端与WEB服务器之间起一个数据中转作用,纯粹是IO操作,自身并不涉及到复杂计算。反向代理用事件驱动来做,显然更好,一个工作进程就可以run了,没有进程、线程管理的开销,CPU、内存消耗都小。
所以Nginx、Squid都是这样做的。当然,Nginx也可以是多进程 + 事件驱动的模式,几个进程跑libevent,不需要Apache那样动辄数百的进程数。Nginx处理静态文件效果也很好,那是因为静态文件本身也是磁盘IO操作,处理过程一样。至于说多少万的并发连接,这个毫无意义。我随手写个网络程序都能处理几万的并发,但如果大部分客户端阻塞在那里,就没什么价值。
再看看Apache或者Resin这类应用服务器,之所以称他们为应用服务器,是因为他们真的要跑具体的业务应用,如科学计算、图形图像、数据库读写等。它们很可能是CPU密集型的服务,事件驱动并不合适。例如一个计算耗时2秒,那么这2秒就是完全阻塞的,什么event都没用。想想MySQL如果改成事件驱动会怎么样,一个大型的join或sort就会阻塞住所有客户端。这个时候多进程或线程就体现出优势,每个进程各干各的事,互不阻塞和干扰。当然,现代CPU越来越快,单个计算阻塞的时间可能很小,但只要有阻塞,事件编程就毫无优势。所以进程、线程这类技术,并不会消失,而是与事件机制相辅相成,长期存在。
总结之,事件驱动适合于IO密集型服务,多进程或线程适合于CPU密集型服务,它们各有各的优势,并不存在谁取代谁的倾向。再盲目的言之Nginx可以取代Apache的,该好好反思了。
原文地址:http://www.php100.com/html/itnews/PHPxinwen/2012/0103/9606.html
相关推荐
### Apache与Nginx的区别详解 #### 一、概述 在服务器领域,Apache与Nginx作为两大主流的Web服务器软件,在技术实现上各有特点,适用于不同场景的需求。本文将从多个角度对这两种服务器进行比较分析,帮助读者理解...
以上就是关于Apache和Nginx的安装与简单配置介绍。具体使用时,还需要根据实际需求进行调整,并注意安全设置,例如SSL/TLS证书的配置、防火墙规则等。希望这些信息能帮助你搭建和管理自己的HTTP服务器。
总结,Apache+nginx+resin的配置涉及到多层服务器的协同工作,这种架构可以充分利用每个组件的优势,提供高效且可扩展的Web服务。正确配置和理解这些组件的交互是实现这一目标的关键。在实际部署中,还需要考虑负载...
### 高并发环境下 Apache 与 Nginx 的 IO 性能比较 随着互联网技术的快速发展,网络用户数量急剧增加,导致网络服务器面临高并发访问的压力。在这种情况下,提高服务器的I/O性能变得尤为重要。本文主要探讨了Linux...
【Apache2Nginx简介】 Apache2Nginx(A2N)是一个专为Linux环境设计的开源命令行工具,其主要功能在于帮助...在实际使用中,务必确保对Apache和Nginx的配置有深入理解,以便顺利进行迁移并充分利用Nginx的高性能优势。
一、 关于Apache与Nginx的优势比较 不断有人跟我说Nginx比Apache好、比Apache快之类。Nginx更主要是作为反向代理,而非Web服务器使用。我翻译过一本关于反向代理的技术书籍,同时精通Apache API开发,对Nginx和...
Nginx的配置文件语法虽然与Apache的httpd.conf有所区别,但是基本配置项很容易转换,如站点的根目录、索引文件、日志记录等。Nginx提供了详尽的文档和社区资源帮助用户完成配置迁移。 接下来要探讨的是Nginx的高...
本文将对三种流行的Web服务器——Apache、Lighttpd与Nginx进行深入对比分析,帮助读者了解它们各自的特点、优势及适用场景。 #### 二、软件介绍 ##### 1. Lighttpd **特点**: - **内存开销低**:Lighttpd以其极...
nginx相较于我们熟悉的apache、IIS的优势,就我浅入浅出的了解,在于“反向代理”和“负载均衡”。因此考虑到能够为Web服务器节省资源,它可以代替apache来提供Web服务。那么上正题了,nginx有这么多优势,那在...
这篇性能对比测试报告主要关注了三个主流的Web...总的来说,Apache、Nginx和Lighttpd各有优势,选择哪一款取决于具体应用场景和性能需求。在实际项目中,可以考虑进行类似的压力测试,以确保所选服务器能满足项目需求。
IIS(Internet Information Services)、Apache、Tomcat、Nginx和CDN(内容分发网络)是IT领域中常见的几个技术名词,它们各有各的用途和特点。 IIS是微软公司开发的一个Web服务器软件,它是Windows操作系统的一个...
在介绍如何搭建高可用、高性能PHP集群的过程中,涉及的技术点和知识点主要围绕LVS、...通过合理的规划和配置,可以充分发挥LVS、Keepalived、Nginx和Apache各自的优势,共同构建一个稳定、高效的PHP运行环境。
在高并发场景下,Nginx相较于Apache展现出了显著的优势。Nginx采用异步非阻塞模型,能够高效处理大量并发连接,使其成为Apache的一个理想替代品。Nginx作为一款轻量级的Web服务器,其核心设计在于反向代理、负载均衡...
《实战Nginx:取代Apache的高性能Web服务器》是一本深度探讨Nginx技术的书籍,作者张宴通过丰富的实践经验和深入的技术解析,为读者揭示了Nginx作为高性能Web服务器的优势及其应用策略。这本书主要涵盖了以下几个...
#### Nginx与Apache的区别 Nginx和Apache都是优秀的Web服务器软件,但它们之间存在一些显著的区别: 1. **架构差异**: - **Apache**:采用传统的预分派模型,每个连接请求都会被分配到一个独立的进程或线程中...
1. 非阻塞I/O模型:与Apache的多进程或线程模型不同,Nginx采用事件驱动的异步非阻塞模型,能有效处理大量并发连接,降低了CPU和内存资源的消耗。 2. 反向代理和负载均衡:Nginx能够作为反向代理服务器,将用户请求...
一、Nginx的特点与优势 1. 异步非阻塞模型:Nginx采用事件驱动的异步非阻塞I/O模型,能够处理大量并发连接,尤其适合高流量网站。 2. 轻量级:Nginx启动快,内存占用少,资源利用率高,这使得它在处理大量并发请求时...