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