本文分享自天翼云开发者社区《Nginx工作原理》,作者:王****秀

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 事件。