# 基本用法
# 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 零拷贝传输模式