# 基本用法

# 1.nginx 介绍

# 1.1 轻量

  • 源代码只包含核心模块
  • 其他非核心功能都是通过模块实现,可以自由选择

# 1.2 架构

  • Nginx 采用的是多进程(单线程)和多路 IO 复用模型

# 1.2.1 工作流程

1.Nginx 在启动后,会有一个master 进程和多个相互独立的worker进程。

2.接收来自外界的信号,向各worker进程发送信号,每个进程都有可能来处理这个连接。

3.master 进程能监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程。

  • worker 进程数,一般会设置成机器 cpu 核数。因为更多的 worker 数,只会导致进程相互竞争 cpu,从而带来不必要的上下文切换。
  • 使用多进程模式,不仅能提高并发率,而且进程之间相互独立,一个 worker 进程挂了不会影响到其他 worker 进程。

# 1.2.2 IO 多路复用

  • 多个文件描述符的 IO 操作都能在一个线程里并发交替顺序完成,复用线程。

# 1.2.3 CPU 亲和

  • 把 CPU 内核和 nginx 的工作进程绑定在一起,让每个 worker 进程固定在一个 CPU 上执行,从而减少 CPU 的切换并提高缓存命中率,提高 性能

# 1.2.4 sendfile

  • sendfile 零拷贝传输模式