Nginx¶
请求处理¶
多进程¶
服务器每当收到一个客户端时,就有 服务器主进程(master process)生成一个 子进程(worker process和客户端建立连接进行交互,直到连接断开,该子进程就结束了。
- 使用 进程 的好处是 各个进程之间相互独立,不需要加锁,减少了使用锁对性能造成影响。
- 独立的进程,可以让 进程互相之间不会影响
异步非阻塞机制¶
同时处理 多个客户端请求。
事件驱动模型¶
- 事件收集器:负责收集
worker进程的各种IO请求; - 事件发送器:负责将
IO事件发送到 事件处理器; - 事件处理器:负责各种事件的 响应工作。
事件发送器 将每个请求放入一个 待处理事件列表,使用非阻塞 I/O 方式调用 事件处理器 来处理该请求。(epoll)
进程处理¶
Nginx 服务器使用 master/worker 多进程模式。
- 主程序
Master process启动后,通过一个for循环来 接收 和 处理外部信号; - 主进程 通过
fork()函数产生worker子进程,每个 子进程 执行一个for循环来实现Nginx服务器 对事件的接收 和 处理。