这个问题不是nginx对apache的问题。我更感兴趣的是NGinx相对于Apache的体系结构优势。就像我能理解的-
为什么会这样呢?Apache落在哪里了?
发布于 2010-09-03 11:00:24
nginx严格地“优于”Apache没有任何单一的原因。对于许多加载模式,您可以配置Apache,以便它处理这个负载。对于某些(非常繁忙的)加载模式,nginx在默认配置中可能会出现性能下降,并且可能需要微调才能正常工作。
然而,许多人的经验是,nginx实际上可以“更好地”打开盒子,或者使用简单的调优。当nginx作为前端安装时,许多系统的性能明显提高,Apache移到后端。
主要原因是nginx是事件驱动的,并且包含处理连接生命周期的状态机。这样,您可以有很少的“工作者”进程,每个进程同时处理数百个甚至数千个连接。对于Apache,您必须运行与连接数量相同的子进程(或线程)数。
很明显,三个过程对一千个进程应该是一个巨大的胜利,至少。
特别是,nginx可以轻松地大大减少服务静态文件(图像、Javascript、CSS)的负载。在nginx中处理每个附加连接非常便宜,因此,由于静态文件通常在请求数量上占大多数,因此可以进行高效的处理。
另外,对于“慢客户端”,nginx的性能更好。当您让Apache直接查看Internet,并且客户端通过(拥挤的)线路发送请求时,您的(fast)服务器将不得不耐心地给(慢)客户机喂食,直到它消耗了整个响应。因此,Apache子(或线程)不能做任何有用的事情。另一方面,Nginx worker只是在处理其他连接的同时,将这种缓慢的连接保存在epoll描述符集中。
从概念的角度来看,您应该始终尝试将请求的“类”分离开来,并具有它们自己的性能配置文件和需求。例如,为小型静态文件提供服务是这样的类之一;提供动态页面是另一个类;为大型静态文件提供服务则是另一个类。将nginx引入您的系统会隐式地处理这种分离。
https://stackoverflow.com/questions/3633244
复制相似问题