Nginx基本原理!

image

Nginx 启动之后,在 Linux 系统中有两个进程,一个为 master,一个为 worker。

master 作为管理员不参与任何工作,只负责给多个 worker 分配不同的任务(worker一般有多个)。

worker是如何工作的?

客户端发送一个请求首先要经过 master,管理员收到请求后会将请求通知给 worker。

多个 worker 以争抢的机制来抢夺任务,得到任务的 worker 会将请求经由 tomcat 等做请求转发、反向代理等。

image

一个 master 和多个 worker 的好处?

可以使用 nginx -s reload 进行热部署。

每个 worker 是独立的进程,如果其中一个 worker 出现问题,其它 worker 是独立运行的。

会继续争抢任务,实现客户端的请求过程,而不会造成服务中断。

设置多少个 worker 合适?

Nginx 和 redis 类似,都采用 IO 多路复用机制,每个 worker 都是一个独立的进程,每个进程里只有一个主线程。

通过异步非阻塞的方式来处理请求,每个 worker 的线程可以把一个 cpu 的性能发挥到极致。

因此,worker 数和服务器的 cpu 数相等是最为适宜的