`
maosheng
  • 浏览: 568183 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nginx 如何实现高性能和可扩展性

阅读更多
NGINX的整体架构的特点是由一组进程协同工作:

主进程:负责执行特权操作,如阅读配置文件、绑定套接字、创建/通知协调(Signalling)子进程。

工作进程:负责接收和处理连接请求,读取和写入磁盘,并与上游服务器通信。当NGINX处于活跃状态时,只有工作进程是忙碌的。

缓存加载器进程:负责将磁盘高速缓存加载到内存中。这个进程在启动时运行后随即退出。

缓存管理器进程:负责整理磁盘缓存的数据保证其不越界。这个进程会间歇性运行。

NGINX能够实现高性能和可扩展性的关键取决于两个基本的设计选型:

尽可能限制工作进程的数量,从而减少上下文切换带来的开销。默认和推荐配置是让每个CPU内核对应一个工作进程,从而高效利用硬件资源。

工作进程采用单线程,并以非阻塞的方式处理多个并发连接。

NGINX的每个工作进程通过状态机处理多个连接请求,这个状态机被实现为非阻塞的工作方式:

每个工作进程需要处理若干套接字,包括监听套接字或者连接套接字。

当监听套接字收到新的请求时,会打开一个新的连接套接字来处理与客户端的通信。

当一个事件到达连接套接字时,工作进程迅速完成响应,并转而处理其他任何套接字新收到的事件。

NGINX选择这样的设计,使它从根本上区别于其他Web服务器。通常的Web服务器会选用将每个连接分配给独立线程的模式,这使得多个连接的处理非常容易,因为每个连接可以被认为是包含多个步骤的一个线性序列,但这样会产生上下文切换的开销。事实上,工作线程大部分的时间处于阻塞的状态,在等待客户端或其它上游服务器。当试图执行I/O等操作的并发连接数/线程数的规模超过一定阈值,或是内存消耗殆尽的时候,上下文切换的成本就显现出来了。

从另一方面讲,NGINX的设计是不让工作进程阻止网络流量,除非没有任何工作要做。此外,每一个新的连接只消耗很少的资源,仅包括一个文件描述符和少量的工作进程内存。

总的来说,NGINX的这种工作模式在系统调优后,它的每个工作进程都能够处理成百上千的HTTP并发连接。

正向代理和反向代理:

系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部网络看来就是代理服务器发起的访问,此时代理服务器实现的是正向代理

当外部请求进入系统时,代理服务器把该请求转发到系统中的某台服务器上,对外部请求来说,与之交互的只有代理服务器,此时代理服务器实现的是反向代理。

简单来说,正向代理是代理服务器代替系统内部来访问外部网络的过程,反向代理是外部请求访问系统时通过代理服务器转发到内部服务器的过程。










分享到:
评论

相关推荐

    深入理解nginx如何实现高性能和可扩展性

    在了解NGINX如何实现高性能和可扩展性之前,首先需要了解NGINX的整体架构特点以及其设计理念。 NGINX的进程模型是其高性能和可扩展性的核心,它包括一个主进程、多个工作进程、缓存加载器进程和缓存管理器进程。主...

    Nginx高性能Web服务器详解.rar

    2. 反向代理:Nginx可以作为反向代理服务器,接收客户端请求后转发到后端服务器,提高系统扩展性和可用性。 3. 负载均衡:通过轮询、权重分配、最少连接数等方式,Nginx可以智能地分配请求到不同的后端服务器。 4. ...

    Nginx高性能Web服务器详解.pdf

    反向代理允许Nginx作为前端服务器,将来自用户的请求转发到适当的后端服务,增强了系统的可扩展性和可用性。负载均衡则可以根据预设策略分配流量,确保服务的稳定性和响应速度。HTTP缓存则可以减少对后端服务器的...

    Nginx高性能Web服务器详解

    总的来说,Nginx凭借其高性能、高并发、易扩展的特性,在Web服务领域有着广泛的应用。通过深入理解和熟练掌握Nginx的配置与管理,可以有效地提升网站的稳定性和效率。对于IT从业者而言,掌握Nginx是提升自身技能的...

    nginx高性能web服务器详解

    **Nginx高性能Web服务器详解** Nginx是一款开源、高性能、轻量级的Web服务器/反向代理服务器,广泛应用于互联网和企业级应用中。它的设计目标是高并发、低内存占用,使得Nginx在处理静态内容和作为反向代理时表现...

    实战Nginx:取代Apache的高性能Web服务器 PDF

    11. 可扩展性:Nginx服务器可以轻松地通过增加更多的Nginx服务器实例进行水平扩展,支持高流量和高负载的场景。 12. 跨平台:Nginx支持多种操作系统平台,包括Linux、Windows、FreeBSD、Mac OS X等。 总结来说,...

    Spring Boot+Nginx实现负载均衡1

    Spring Boot+Nginx 实现负载均衡 在本文中,我们将介绍如何使用 Spring Boot 和 Nginx 实现负载均衡。负载均衡是指将 Incoming requests ...这种方法可以提高系统的可扩展性和可靠性,满足高可用性和高性能的需求。

    实战Nginx 高性能web服务器

    而反向代理则可以在多层架构中隐藏内部结构,提高安全性和可扩展性。 Nginx的Rewrite规则编写 Nginx提供了强大的Rewrite规则,允许复杂的URL重写和转换,这对于维护搜索引擎优化(SEO)和规则复杂的Web应用至关重要...

    Nginx高性能WEB服务器系列(超级详细)

    ### Nginx 高性能 WEB 服务器系列知识点详解 #### 1. Nginx 入门简介 **Nginx** 是一款广受欢迎的高性能 HTTP 和反向代理服务器,同时也可作为 IMAP/POP3/SMTP 代理服务器。它以其出色的稳定性、丰富的功能集、...

    Keepalived+Nginx实现高可用Web负载均衡.docx

    同时,我们还可以使用 Nginx 的负载均衡功能来分配流量,使得我们的 web 服务具有更高的性能和可扩展性。 在这个解决方案中,我们使用了以下几种技术: * Keepalived:用于实现高可用性(HA)的解决方案。 * Nginx:...

    实战Nginx_取代Apache的高性能Web服务器

    ### 实战Nginx:取代Apache的高性能Web服务器 #### Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器...对于希望构建高性能、可扩展Web服务的技术团队来说,深入学习和掌握Nginx的相关知识将是十分有价值的。

    Nginx是一个高性能的开源Web服务器和反向代理服务器.docx

    其灵活性、高性能和可扩展性使其成为许多互联网公司和网站的首选服务器软件。以下是对Nginx的详细介绍: 一、Nginx的主要功能和特点 高性能: Nginx采用异步非阻塞的事件驱动架构,可以支持大量并发连接,快速响应...

    实战Nginx取代Apache的高性能Web服务器

    Nginx的负载均衡机制可以分配请求到多个服务器池中的服务器,从而实现高可用性和故障转移。 最后,对于Web开发者而言,了解如何针对Nginx进行开发优化同样重要。例如,在开发Web应用时,应当优化静态资源的访问路径...

    Nginx实现虚拟主机

    3. **负载均衡**:通过负载均衡功能,Nginx可以在多个服务器之间分配流量,提高系统的可用性和扩展性。 4. **数据缓存**:Nginx可通过内置模块实现前端业务数据的缓存服务,减少数据库压力。 ### Nginx模块分析 ...

    nginx实现请求的负载均衡 + keepalived实现nginx的高可用的shell脚本

    在IT行业中,构建高效、可靠的Web服务是至关重要的。这里我们关注的是如何通过Nginx实现请求的负载均衡以及利用Keepalived实现...同时,Shell脚本的使用简化了部署和维护过程,使得整个解决方案更具灵活性和可扩展性。

    实战Nginx:取代Apache的高性能Web服务器.

    2. 反向代理和负载均衡:Nginx能够作为反向代理服务器,将用户请求分发到后端多个服务器,实现负载均衡,提高服务的可用性和响应速度。 3. 静态文件处理:Nginx对静态文件(如图片、CSS、JavaScript)的处理性能...

    keepalived+nginx实现双机主备

    * 负载均衡:使用 Nginx 可以实现负载均衡,提高系统的性能和可扩展性。 * 灵活性:使用 Keepalived 和 Nginx 可以轻松地实现主备切换,灵活地应对不同场景。 因此,本文的架构和配置可以应用于各种高可用性和负载...

    ssm+redis+nginx实现session共享和负载均衡

    综上所述,结合SSM、Redis和Nginx,我们可以构建一个高可用、高性能的Web应用系统,实现session的跨服务器共享,并通过负载均衡策略确保服务的稳定性和可扩展性。在实际项目中,可以根据业务需求和资源状况,灵活...

Global site tag (gtag.js) - Google Analytics