apache - Nginx和Apache Web服务器

标签 apache architecture webserver nginx

这个问题不是nginx vs apache。我对NGinx相对于Apache的体系结构优势更感兴趣。据我所知-

  • nginx是一个异步的,事件驱动的Web服务器,其性能大大优于Apache。

  • 为什么是这样? Apache在哪里落后?

    最佳答案

    nginx严格“胜过” Apache的原因没有唯一的原因。对于许多负载模式,您可以配置Apache以使其处理此负载。对于某些(非常忙碌)的负载模式,默认配置下的nginx可能会导致性能下降,并且可能需要进行微调才能正常工作。

    但是,很多人都有过这样的经验,nginx实际上可以“更好”地进行工作,或者通过简单的调整即可工作。当nginx作为前端安装而Apache移至后端时,许多系统的性能明显得到了提高。

    主要原因是nginx是事件驱动的,并且包含处理连接生命周期的状态机。这样,您将只有很少的“ worker ”流程,每个流程同时处理数百甚至数千个连接。对于Apache,您必须运行与连接数相同数量的子进程(或线程)。

    显然,至少在一千个流程中,三个流程应该是一个巨大的胜利。

    特别是,nginx可以轻松地极大地减少提供静态文件(图像,Javascript,CSS)的负担。在nginx中处理每个附加连接非常便宜,因此就请求数而言,静态文件通常占多数,因此您可以进行高效处理。

    另外,nginx性能对于“慢客户端”来说更好。当您让Apache直接访问Internet,并且客户端通过(拥塞)线路发送请求时,您的(快速)服务器将不得不耐心地为(慢速)客户端提供数据,直到它消耗了整个响应。因此,Apache子级(或线程)无法做任何有用的事情。另一方面,Nginx worker只是将此慢速连接保持在epoll描述符集中,同时处理其他连接。

    从概念的角度来看,您应该始终尝试将请求的“类”与它们自己的性能概况和需求分开。例如,提供小型静态文件就是此类中的一种;提供动态页面是另一类。提供巨大的静态文件是另一回事。将nginx引入系统会隐式处理这种分离。

    关于apache - Nginx和Apache Web服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3633244/

    相关文章:

    apache - vi中的^@字符是什么?

    javascript - 服务内部的数据更改不会更新范围

    java - Spring Security 应用程序的用户类

    python - 简单的网络服务器和 Apache 服务器有什么区别?

    node.js - 如何在node.js中监听192.168.1.1/subdir/?

    php - 使用 mod_rewrite 的 .htaccess 新手问题

    php - vHost 和 SSL 中的 mod_rewrite

    oop - 接口(interface)的子类型仅与另一个接口(interface)的子类型兼容

    java - 从服务器提供定期更新的图像而不会损坏

    apache - Tomcat配置求助!