关于nginx架构探究(1)

nginx的架构主要是有一个主监控进程:master;三个工作进程:worker;还有Cache的两个进程。back-end-server是后端服务器,主要是处理后台逻辑。nginx作为代理服务器需要和前端web以及后端server通讯
master大多数情况下是挂起的,直到有信号来,比如worker进程down掉了,那么会产生singnal给master进程,直到回复到初始状态,然后又被挂起。
worker主要做的就是和后台及web端的I/O进程操作,做的是利用select,epoll_waite等进行多路复用的进程处理,以等待事件。一旦有事件发生或收到信号,worker就开始处理相关请求。
Cache进程不处理客服端请求,也就没有I/O操作,主要处理的是超时事件。Cache加载进程,是在nginx启动的时候进行加载缓存,一次操作,以后加载进程自动退出。
进程通信:
nginx里面的进程通信主要有两种方式:1.socket;2.共享内存
socket通信在nginx里面是用于父子进程的通信,至于子进程之间的通信则是采用共享内存的方式,nginx为我们提供了一整套完整的共享内存接口:

所有的共享内存都一链表的形式链接,当我们要创建新的共享内存的时候,先查看该内存是否存在,以避免冲突。由于共享内存被多进程使用,所以
必然用到锁机制。nginx使用slab机制对共享内存进行初始化和管理,使得共享内存方式更加高效。slab主要采用缓存和对齐方法来保证内存分配高效。
缓存主要指的是缓存尺,对齐就是涉及到内存管理及回收机制。
信号处理:支持与用户进行信息交互,在不中断nginx服务的情况下,讲信号量与回调函数绑定。nginx采用ngx_singal_t结构体来存储所有的信号量。
关于nginx架构探究(1)的更多相关文章
- 关于nginx架构探究(4)
事件管理机制 Nginx是以事件驱动的,也就是说Nginx内部流程的向前推进基本都是靠各种事件的触发来驱动,否则Nginx将一直阻塞在函数epoll_wait()或suspend函数,Nginx事件一 ...
- 关于nginx架构探究(3)
Nginx 模块综述 Nginx 所有的代码都是以模块的新式组织的,包括核心模块和功能模块.Nginx加载模块的时候不想Apache一样动态加载,它是直接被编译到二进制执行文件中,所以,如果想要加载新 ...
- 关于nginx架构探究(2)
nginx 数据结构 1.Hash table nginx 对虚拟主机的管理使用到了HASH数据结构,假设配置文件里有如下的配置. Server{ listen 192.168.0.1 server_ ...
- Nginx学习笔记(一) Nginx架构
Nginx架构 Nginx全程是什么? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. ...
- Nginx架构的企业级应用
Nginx架构的企业级应用 ==================================================== 实现HA高可用集群 实现LB负载均衡集群 Nginx实现反向代理 ...
- [转载] 深入 nginx 架构
原文: http://www.cnbeta.com/articles/402709.htm 了解 nginx 架构帮助我们学习如何开发高性能 web 服务. 为了更好地理解设计,你需要了解NGINX是 ...
- nginx架构与基础概念
1 Nginx架构 Nginx 高性能,与其架构有关. Nginx架构: nginx运行时,在unix系统中以daemon形式在后台运行,后台进程包含一个master进程和多个worker ...
- Nginx从入门到放弃-第5章 Nginx架构篇
5-1 Nginx常见问题_架构篇介绍 5-2 Nginx常见问题_多个server中虚拟主机读取的优先级 5-3 Nginx常见问题_多个location匹配的优先级1 5-4 Nginx常见问题_ ...
- 转:初探nginx架构(一)
来源:http://tengine.taobao.org/book/chapter_02.html 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢? ...
随机推荐
- Altium Designer summer 9 布线 - 差分对布线
差分信号系统是采用双绞线进行信号传输的,双绞线中的一条信号线传送原信号,另一条传送的是与原信号反相的信号.差分信号是为了解决信号源和负载之间没有良好的参考地连接而采用的方法,它对电子产品的干扰起到固有 ...
- C++11之后,对源代码增加了UTF8和UCS4的支持(Windows内部使用Unicode,因为nt内核用的是ucs2,那是89年,utf8到了92年才发明出来)
在C++编程中, 我们常打交道的无非是编辑器和编译器, 对编辑器起来说,我们常遇到就是乱码问题, 比如中文注释显示或是保存不了等, 解决办法就是把你的文件保存成Unicode(UTF8). 对于编译器 ...
- 开发者应当了解的WebKit知识
开发者应当了解的WebKit知识 对一些开发者而言,WebKit就是一个黑盒子.丢进去HTML.CSS.JS等一连串的东西,而WebKit就能变魔术一般显示出一个很棒的网页出来.实际上,正我的同事Il ...
- 【转】Java 多线程(四) 多线程访问成员变量与局部变量
原文网址:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913659.html 先看一个程序例子: public class HelloThrea ...
- 【android】adb连接几个常见问题(遇到再新增)
不知道为什么,每次连接手机,都提示 adb server is out of date,偶尔也会提示not found 每次去百度,都好多方法---终于有一种方法非常靠谱,遂,记录之--- 问题一:o ...
- HDFS文件系统的操作
package com.bank.utils; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;impor ...
- J2EE基础总结(4)——JSP
什么是JSP JSP全名为Java Server Pages,中文名叫javaserver页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.很多 ...
- Node.js开发环境介绍-调试工具
1)WebStorm 断点调试,单步执行 2)nodemon 监听文件变更,自动重启 3)node-inspector 基于浏览器调试nodejs 4)Chrome Developer Tools 基 ...
- css变形几大属性
1.transform: transform-function() * | none; transform-function: translate().scale().rotate().skew(). ...
- box-shadow全面解析
一.box-shadow语法: box-shadow: none | inset(可选值,不设置,为外投影,设置,为内投影) x-offset(阴影水平偏移量,正方向为right) y-offset( ...