一、了解Nginx的进程模型
Nginx(发音为“engine x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它的进程模型主要采用的是多进程模型,具体来说,是“单Master—多Worker”模型。
在这种模型中,Nginx启动后,会有一个Master进程和多个Worker进程在后台运行。Master进程主要负责接收来自外界的信号、读取配置文件以及初始化Worker进程。而Worker进程则是实际处理网络请求的核心,它们采用单线程、非阻塞的事件模型(EventLoop,事件循环)来实现端口的监听及客户端请求的处理和响应。每个Worker进程都有Master创建出来的处于监听状态的socket句柄,因此它们都能监听到新连接加入的事件。
Worker进程的数量通常与机器的CPU核心数量一致,这是为了充分利用多核CPU的性能。Worker进程之间是相互独立的,一个请求只能在一个Worker进程中进行处理,一个Worker进程也不可能处理其他Worker进程的请求。当Worker进程因某种原因退出时,Master进程会及时启动新的Worker进程来替代。
此外,Nginx也支持两种启动方式:单进程启动和多进程启动。在单进程启动模式下,系统中仅有一个进程,该进程既充当Master进程的角色,也充当Worker进程的角色。而在多进程启动模式下,系统有且仅有一个Master进程,但至少有一个Worker进程在工作。
总的来说,Nginx的进程模型设计得非常高效和稳定,能够处理大量的并发连接和请求,是高性能Web服务器和反向代理服务器的优秀选择。
正常情况下,我们的Nginx会有两个进程,分别是master和worker。默认情况下的master和worker都只有一个
二、手动修改worker进程数量
修改的方法当然也是修改核心配置文件nginx.conf文件啦
我们看到,默认的Nginx配置的只有一个工作进程
可以手动修改成我们想要的工作进程数
这个时候再查看下Nginx进程,可以看到多了一个工作进程
三、Master向Worker发送的信号模型
至此,关于Nginx的进程模型介绍完毕,后续还会持续更新关于Nginx的详细技术点,敬请期待!