1 Nginx请求处理流程

2 Nginx进程结构

3 Nginx进程管理:信号

3.1 Master进程

  • 监控worker进程

    • CHLD
  • 管理worker进程
  • 接收信号
    • TERM,INT
    • QUIT
    • HUP
    • USR1
    • USR2
    • WINCH

3.2 Worker进程

  • 接收信号

    • TERM,INT
    • QUIT
    • USR1
    • WINCH

3.3 nginx命令行

  • reload:HUP
  • reopen:USR1
  • stop:TERM
  • quit:QUIT

4 reload 流程

1)向master进程发送HUP信号(reload命令)

2)master进程校验配置语法是否正确

3)master进行打开新的监听端口

4)master进程用新配置启动新的worker子进程

5)master进程向老worker子进程发送QUIT信号

6)老worker进程关闭监听句柄,处理完当前连接后结束进程

5 热升级流程

1)将旧Ningx文件换成新Nginx文件(注意备份)

2)向master进程发送USR2信号

3)master进程修改pid文件名,加后缀.oldbin(进程自动改的,不需要手动改)

4)master进程用新Nginx文件启动新master进程

5)向老master进程发送QUIT信号,关闭老master

6)回滚:向老master发送HUP,向新master发送QUIT

6 worker进程:优雅的关闭

1)设置定时器worker_shutdown_timeout

2)关闭监听句柄

3)关闭空闲连接

4)在循环中等待全部连接关闭

5)退出进程

7 网络相关

7.1 网络传输

  • 应用层
  • 传输层
  • 网络层
  • 链路层
  • 物理层

7.2 TCP流与报文

7.3 TCP协议与非阻塞接口

  • 读事件

    • Accept建立连接
    • Read读消息
  • 写事件
    • Write写信息

8 Nginx事件循环

8.1 epoll

前提

高并发连接中,每次处理的活跃连接数量占比很小

实现

红黑树,链表

使用

创建,操作(添加/修改/删除),获取句柄,关闭

9 模块分类

最新文章

  1. pages与页面配置
  2. LinkedHashMap源码详解
  3. zoj3261 并查集离线处理
  4. window.location 对象所包含的属性
  5. NSURLSession使用实战教程
  6. python基础教程笔记—即时标记(详解)
  7. Android(java)学习笔记189:eclipse 导入项目是提示:某些项目因位于工作空间目录中而被隐藏。
  8. DOS和UNIX文本文件之间相互转换的方法
  9. HTML5的在线视频播放方案
  10. JCo 指南
  11. VS2012的变态优化,双循环变单循环
  12. 大约 C++ 几个方面分析--overload, override, overwrite, rewrite
  13. U盘做svn版本控制
  14. C#实现无边框窗体点击任务栏图标正常最小化和还原
  15. Modelsim调用用do脚本自动化仿真
  16. apply函数用法
  17. Android中EditText显示明文与密文的两种方式
  18. Kestrel.Transport.Sockets分析与使用
  19. 数字证书原理(ssl,https)
  20. mysql密码的坑

热门文章

  1. Hadoop集群 增加节点/增加磁盘
  2. Trivy 容器镜像扫描工具学习
  3. GoLang设计模式16 - 模板方法模式
  4. [spojSUBST1]New Distinct Substrings
  5. [bzoj1858]序列操作
  6. Python的数据解析
  7. Swagger2简单使用教程
  8. [NOI Online #3 提高组] 魔法值
  9. Yet Another Minimization Problem
  10. 深入了解scanf() getchar()和gets()等函数之间的区别