Nginx的进程模型
Nginx服务器由一个Master进程和多个Worker进程组成:
Master进程:管理Worker进程。对外接口:接收外部的操作(信号);对内转发:根据外部操作的不同,通过信号管理Worker;监听:监控Worker进程的运行状态,Worker进程异常终止后,自动重启Worker进程。
Worker进程:所有Worker进程都是平等的,用于处理网络请求。进程数量:在nginx.conf中配置,一般设置为核心数,充分利用CPU资源,同时,避免进程数量过多,避免进程竞争CPU资源,增加上下文切换的损耗。
HTTP连接建立和请求处理过程
- Nginx启动时,Master进程加载配置文件。
- Master进程,初始化监听的Socket。
- Master进程,Fork出多个Worker进程。
- Worker进程,竞争新的连接,获胜方通过三次握手,建立Socket连接,并处理请求。
Nginx 高性能、高并发
- Nginx 采用多进程+异步非阻塞方式(IO 多路复用 Epoll)。
- 请求的完整过程:建立连接→读取请求→解析请求→处理请求→响应请求。
- 请求的完整过程对应到底层就是:读写 Socket 事件。