clipboard.png
请求流程解析
  1. web / mail / tcp请求进入nginx引擎
  2. nginx引擎属于非阻塞的事件处理引擎,包含有三个状态机来处理各种请求(传输层状态机,HTTP状态机,MALL状态机)
  3. 对于send file这样的请求,会退化成阻塞事件来处理,需要一个线程池来处理(内存不够、磁盘阻塞)
  4. 静态资源,磁盘缓存,access访问日志,error错误日志,跟磁盘内存相关,走的是线程池处理磁盘阻塞情况
  5. 负载均衡,服务代理走的是非阻塞事件处理引擎
nginx的进程结构
  1. 单进程结构:不适合生产环境,只适合开发调试使用
  2. 多进程结构:默认打开多进程模式
    多进程结构:
    1. 父进程(master process):主要做work进程的管理
    2. 子进程(child processes):分两类,一类为cache相关,cache manager(缓存管理),cache loader(缓存载入); 一类为 worker进程

注:多进程而不是多线程,因为 nginx要保持高可用性,高可靠性,而多线程是共享一个进程的地址空间的,当某个请求导致地址越界,就会导致一个进程都挂掉。而多进程就不会出现这种问题。