Nginx服务器架构

=====Nginx服务器架构=====

=== 模块化结构 ===

1、模块化设计的原则:

      单一职责原则、自顶向下,逐步求精原则,高内聚,低耦合原则

2、nginx涉及到的模块分为:核心模块、标准模块、HTTP模块、可选HTTP模块、邮件服务模块、第三方模块。

 

=== nginx服务器的web请求处理机制 ===

1、web服务器与客户端是一对多的关系,web服务器必须有能力同时为多个客户端提供服务。

     一般来说,完成并行处理请求工作有三种方式可供选择:多进程方式、多线程方式和异步方式。

 

概念

优点

缺点

多进程方式

server每接受到一个client请求,就由主进程生成一个子进程出来

和客户端建立连接进行交互,直到连接断开,该子进程就结束了。

各子进程相互独立,处理请求时互不干扰这保证了提供服务

稳定性,子进程退出时资源被回收业不会留下任何垃圾

对系统资源造成压力

使系统性能下降

多线程方式

server每接受到一个client请求,就由主进程派生一个子线程出来

 和客户端进行交互

减轻了对系统资源的消耗

多个线程彼此互相影响,开发者要自己

对内存进行管理,增加出错的风险

异步方式

异步阻塞:发送方发生请求给接收方后,不必等待响应,可以

它事,接受方处理请求时进行的IO操作如果不能马上得到结果

一直等到返回结果后,才响应发送方。

异步非阻塞:接受方处理请求时进行的IO操作如果不能马上得

 果,也不等待,而是马上返回去做其他事,当IO操作完成以后

完成状态通知接收方,接收方再响应发送方。

 

异步非阻塞:效率最高

异步阻塞:效率低

2、nginx服务器的一个很显著的优势是能够同时处理大量并发请求,它结合多进程机制和异步机制(异步非阻塞)对外提供服务。

3、Nginx服务器的进程模型有两种:Single模型(单进程模型)和Master-Worker(Master-Slave),所有工作进程都用于接收和处理客户端的请求。

4、nginx服务器的事件处理机制:


=== Nginx服务器架构 ===

1、nginx服务器的进程:

    主进程:Nginx服务器启动时运行的主要进程

    工作进程:由主进程生成、生存与主机程的整个生命周期,它是nginx服务器提供web服务,处理客户端请求的主要进程,完成了nginx服务器的主体工作。因此我们要重点监视工作进程的运行状态,保证nginx服务器对外提供稳定的服务。

    缓存索引重建及管理进程:缓存索引重建进程在nginx服务器启动一段时间后(默认1分钟),由主进程生成;缓存索引管理进程存在于主进程的整个生命周

2、进程的交互:

    Master-Worker:通过管道

    Worker-Worker:通过主进程

=====Nginx服务器高级配置=====

nginx服务器的配置应结合实际运行环境(服务器运行的操作系统及硬件环境)进行配置。针对不同的网络负载环境选择相匹配的硬件环境。

1、针对IPv4的linux内核参数优化配置

    net.core.netdev_max_backlog :设置允许发送到队列的数据包的最大数目,默认128

    net.core.somaxcon:配置系统同时打开的TCP连接数,默认128

   net.ipv4.tcp_max_orphans:设置系统最多允许存在多少TCP套接字不被关联到任何一个用户文件句柄上。超过这个数,没关联的TCP套接字立即被复位,同时给出警告信息。可以防止简单的Dos。

   net.ipv4.tcp_timestamps:是否禁用对tcp时间戳的支持,不禁用的话,时间戳必须得是一个增值,若出现后一个时间戳比前一个小,系统就会认为有错,拒绝接受。针对nginx来说,建议将其关闭net.ipv4.tcp_timestamps = 0。

 

2、针对网络的配置

     worker_processes:最好设置为cpu内核个数的倍数,这个数并不是越大越好,太大会增加主进程调度负担,也可能影响系统的IO效率。

     worker_cpu_affinity:设置为每个工作进程分配的CPU工作内核,指令值是由几组二进制值表示的。每组表示一个工作进程,每位表示该进程使用cpu内核的情况,1使用,0不使用。

                                        例:worker_cpu_affinity  0001 0100 1000 0010;         0001表示第一个进程使用第一个cpu内核,0100表示第二个进程使用第二个cpu内核。



本文转自 Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1958889

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/560425

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。