一、master和worker
master相当于是一个管理员或者老板,而worker相当于是一个工人,worker可以是多个存在的。
二、worker是如何进行工作的
客户端client发送一个请求,先由管理员master拿到,然后 分发给一个或者多个worker,woker多个争抢的机制来得到客户端client的请求,然后调用对应的tomcat去进行工作。
三、一个master和多个worker的好处
1、可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作。
2、每个 worker 是独立的进程,如果有其中的一个 worker 出现问题,其他 worker 是独立的,会继续进行争抢,实现请求过程,不会造成服务中断。
四、设置多少个worker合适
worker 数和服务器的 cpu 数相等是最为适宜的(例如:四核的cpu,就可以设置四个worker)。
Nginx和redis类似,都是采用了io多路复用机制,每个worker都是一个独立的进程,但每个进程里面只有一个主线程,通过异步非阻塞的方式来处理请求,即使是上千万个请求也不在话下。每个worker的线程可以把一个cpu的性能发挥到极致。所以worker数和服务器的cpu数相等是最为适宜的。设置少了会浪费cpu,设置多了会造成cpu频繁切换上下文而带来损耗。
五、连接数worker_connection
1、客户端发送一个请求,占用了worker的几个连接数?
2个或4个
连接数worker_connection这个值是表示每个worker进程所能建立连接的最大值,所以,一个nginx能建立的最大连接数,应该是worker_connection * worker_processes。当然,这里说的最大连接数,对于HTTP请求本地资源来说,能够支持的最大并发数量是worker_connection * worker_processes,如果是支持http1.1的浏览器每次访问要占用两个连接数,所以普通的静态访问最大并发数是:worker_connection * worker_processes / 2,而如果是HTTP作为反向代理来说,最大并发数量应该是:worker_connection * worker_processes / 4,因为作为反向代理服务器,每个并发会建立与客户端的连接以及与后端服务器的连接(比如tomcat服务的连接),所以这是会占用两个连接。
2、nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的最大并发数是多少?
(1)普通的静态访问最大并发数是: worker_connections * worker_processes /2
(2)如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4